Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Use AVX2 in codegen for GT_STORE_BLK - #55604

Merged
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk
Sep 18, 2021
Merged

Use AVX2 in codegen for GT_STORE_BLK#55604
BruceForstall merged 32 commits into
dotnet:mainfrom
amd:enable-avx2-gt-store-blk

Conversation

@alexcovington

Copy link
Copy Markdown
Contributor

Modifies JIT to allow generating AVX2 instructions when generating code for GT_STORE_BLK nodes when AVX2 is available and the compiler allows for it.

Test case I have been using:

Test Source
usingBenchmarkDotNet.Attributes;usingBenchmarkDotNet.Configs;usingBenchmarkDotNet.Running;usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Reflection.Emit;usingSystem.Runtime.InteropServices;namespaceMemsetMemcpyTest{classProgram{staticvoidMain(string[]args)=>BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);}publicclassMemWrapper{privateconstlongITERS=10_000_000;privateconstintMIN_SIZE=3;privateconstintMAX_SIZE=13;privatereadonlyintTOTAL_SIZES=MAX_SIZE-MIN_SIZE;privatebyte[]_src;privatebyte[]_dest;[ParamsSource(nameof(ArraySizes))]publicintN{get;set;}publicIEnumerable<int>ArraySizes(){int[]sizes=newint[TOTAL_SIZES*2];// Arrays that will fit in SIMD regsiters with no remainderfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE]=1<<i;// Arrays that will have some remainder after SIMD movesfor(inti=MIN_SIZE;i<MAX_SIZE;i++)sizes[i-MIN_SIZE+TOTAL_SIZES]=(1<<i)+2;returnsizes;}[IterationSetup]publicvoidSetup(){_src=newbyte[N];_dest=newbyte[N];Randomr=new();r.NextBytes(_src);}[Benchmark]publicvoidCopy(){for(longi=0;i<ITERS;i++){Array.Copy(_src,_dest,N);}}}}
Results
// * Summary *
BenchmarkDotNet=v0.13.0, OS=Windows 10.0.19042.1083 (20H2/October2020Update)
AMD Ryzen 7 5800, 1 CPU, 16 logical and 8 physical cores
.NET SDK=6.0.100-preview.2.21155.3
[Host] : .NET 6.0.0 (6.0.21.15406), X64 RyuJIT
Job-ANMJNY : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
Job-YSRVRX : .NET 6.0.0 (42.42.42.42424), X64 RyuJIT
InvocationCount=1 UnrollFactor=1
| Method | Job | Toolchain | N | Mean | Error | StdDev | Median | Ratio | RatioSD |
|------- |----------- |----------------------------------------------------------------------------------------------------------------- |----- |----------:|----------:|----------:|----------:|------:|--------:|
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 42.96 ms | 0.014 ms | 0.012 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 8 | 43.02 ms | 0.130 ms | 0.109 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.99 ms | 0.053 ms | 0.044 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 10 | 42.96 ms | 0.017 ms | 0.015 ms | 42.96 ms | 1.00 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 45.82 ms | 0.004 ms | 0.003 ms | 45.82 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 16 | 42.96 ms | 0.009 ms | 0.008 ms | 42.95 ms | 0.94 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 40.68 ms | 0.785 ms | 1.435 ms | 40.10 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 18 | 42.45 ms | 0.836 ms | 1.571 ms | 43.22 ms | 1.04 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.98 ms | 0.019 ms | 0.017 ms | 42.98 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 32 | 42.50 ms | 0.839 ms | 1.091 ms | 42.97 ms | 0.99 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.17 ms | 0.668 ms | 0.625 ms | 42.96 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 34 | 43.31 ms | 0.817 ms | 0.682 ms | 42.97 ms | 1.00 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 45.86 ms | 0.072 ms | 0.060 ms | 45.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 64 | 47.14 ms | 0.911 ms | 1.216 ms | 46.67 ms | 1.03 | 0.03 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.58 ms | 0.040 ms | 0.033 ms | 51.57 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 66 | 51.78 ms | 0.557 ms | 0.465 ms | 51.57 ms | 1.00 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 60.17 ms | 0.028 ms | 0.024 ms | 60.17 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 128 | 57.99 ms | 1.148 ms | 1.074 ms | 57.31 ms | 0.97 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 63.03 ms | 0.039 ms | 0.032 ms | 63.02 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 130 | 57.36 ms | 0.159 ms | 0.133 ms | 57.30 ms | 0.91 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 74.47 ms | 0.010 ms | 0.009 ms | 74.47 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 256 | 68.77 ms | 0.047 ms | 0.036 ms | 68.76 ms | 0.92 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 74.84 ms | 0.363 ms | 0.303 ms | 74.69 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 258 | 69.31 ms | 1.040 ms | 1.238 ms | 68.73 ms | 0.93 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 108.98 ms | 0.392 ms | 0.327 ms | 108.84 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 512 | 91.70 ms | 0.075 ms | 0.066 ms | 91.67 ms | 0.84 | 0.00 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 116.34 ms | 3.630 ms | 10.238 ms | 108.80 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 514 | 91.67 ms | 0.055 ms | 0.046 ms | 91.65 ms | 0.81 | 0.07 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 188.93 ms | 3.627 ms | 3.562 ms | 186.63 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1024 | 138.09 ms | 0.768 ms | 1.102 ms | 137.57 ms | 0.73 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 211.32 ms | 11.223 ms | 33.091 ms | 193.37 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 1026 | 140.32 ms | 2.789 ms | 4.088 ms | 140.37 ms | 0.66 | 0.11 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 372.51 ms | 4.242 ms | 3.760 ms | 369.68 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2048 | 247.33 ms | 5.745 ms | 16.759 ms | 243.52 ms | 0.66 | 0.05 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 265.02 ms | 1.654 ms | 1.381 ms | 265.48 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 2050 | 278.30 ms | 5.416 ms | 4.522 ms | 277.81 ms | 1.05 | 0.02 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 448.92 ms | 3.060 ms | 2.713 ms | 449.40 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4096 | 458.63 ms | 6.026 ms | 5.342 ms | 461.19 ms | 1.02 | 0.01 |
| | | | | | | | | | |
| Copy | Job-ANMJNY | \runtime-master\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 450.68 ms | 2.504 ms | 2.091 ms | 450.70 ms | 1.00 | 0.00 |
| Copy | Job-YSRVRX | \runtime\artifacts\bin\testhost\net6.0-windows-Release-x64\shared\Microsoft.NETCore.App\6.0.0\corerun.exe | 4098 | 460.33 ms | 5.001 ms | 4.176 ms | 461.29 ms | 1.02 | 0.01 |

Please let me know if I can add any other information. Thanks!

@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 13, 2021
@EgorBo

Copy link
Copy Markdown
Member

Related: #33665

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
regSize /= 2;
}
// Copy the remainder by moving the last regSize bytes of the buffer
unsigned remainder = regSize - size;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Is it worth an assert that (remainder <= regSize)?

@alexcovingtonalexcovingtonJul 13, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Sure, that makes sense. I'll add that.

@sandreenkosandreenkoJul 14, 2021

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

I think that the change to support is it kind of small, you can use the same register just

Suggested change
unsigned remainder = regSize - size;
if ((regSize > XMM_REGSIZE_BYTES) && (size <= XMM_REGSIZE_BYTES))
{
regSize = XMM_REGSIZE_BYTES;
}
unsigned remainder = regSize - size;

Nit: remainder looks confusing for me, because I was expecting size to be called the remainder, but I am not sure what would be a better name.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

size really means remainingSize if I understand correctly, so I would at least rename remainder because the real is size.

Suggested change
unsignedremainder = regSize - size;
unsignedshiftBack = regSize - size;// so we could use another full move [totalSize - regSize; totalSize).

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@tannergooding I've finished updating the PR with your suggestions, please let me know if there is anything else I can change.

@tannergooding

Copy link
Copy Markdown
Member

The changes look good/correct to me.

CC. @dotnet/jit-contrib, community PR from our friends at AMD

@sandreenkosandreenko left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

HI @alexcovington, thanks for the PR, the changes look good to me, with 1 question.
Could you please check if it fixes #33617?

Comment threadsrc/coreclr/jit/codegenxarch.cpp Outdated
unsigned remainder = regSize - size;
assert(remainder <= regSize);

srcOffset -= remainder;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is the idea that after it srcOffset + regSize == totalSize?
if we have blockSize = 48, would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

@alexcovingtonalexcovingtonJul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Could you please check if it fixes #33617?

Sure, I'll take a look and add a separate comment after I check.

is the idea that after it srcOffset + regSize == totalSize?

Yes, that's the idea. If there are any remaining bytes leftover after the main copy loop, back up the offset enough so that we can do a single SIMD move with whatever register was allocated to finish moving the remaining bytes.

would it be beneficial to copy as [0, 32) YMM [32, 48) XMM, not as [0,32) YMM [16, 48) YMM?

I don't expect this to have a perf difference, although I'd have to benchmark it to be sure. It seemed easier/cleaner to just reuse the register and regSize that was setup pre-copy. Let me know if you think it's better to break up cases like this instead.

@alexcovington

alexcovington commented Jul 14, 2021

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Unfortunately, it looks like #33617 is not fixed by this change.

I'm seeing what you described, the IL looks the same for both the Vector inits:

Vector<float> localVector = new Vector<float>();
->
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
structWithVectorField.b = new Vector<float>();
->
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001

But the generated code still uses XMM registers to complete the assignment to the field:

1.
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
2.
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0

Here's the full dump:

Full dump
****** START compiling Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
Generating code for Windows x64
OPTIONS: Tier-0 compilation (set COMPlus_TieredCompilation=0 to disable)
OPTIONS: compCodeOpt = BLENDED_CODE
OPTIONS: compDbgCode = false
OPTIONS: compDbgInfo = true
OPTIONS: compDbgEnC = false
OPTIONS: compProcedureSplitting = false
OPTIONS: compProcedureSplittingEH = false
IL to import:
IL_0000 12 00 ldloca.s 0x0
IL_0002 fe 15 01 00 00 1b initobj 0x1B000001
IL_0008 12 00 ldloca.s 0x0
IL_000a fe 16 01 00 00 1b constrained. 0x1B000001
IL_0010 6f 0b 00 00 0a callvirt 0xA00000B
IL_0015 28 0c 00 00 0a call 0xA00000C
IL_001a 12 01 ldloca.s 0x1
IL_001c 16 ldc.i4.0 IL_001d 7d 01 00 00 04 stfld 0x4000001
IL_0022 12 01 ldloca.s 0x1
IL_0024 7c 02 00 00 04 ldflda 0x4000002
IL_0029 fe 15 01 00 00 1b initobj 0x1B000001
IL_002f 12 01 ldloca.s 0x1
IL_0031 7c 02 00 00 04 ldflda 0x4000002
IL_0036 fe 16 01 00 00 1b constrained. 0x1B000001
IL_003c 6f 0b 00 00 0a callvirt 0xA00000B
IL_0041 28 0c 00 00 0a call 0xA00000C
IL_0046 28 0d 00 00 0a call 0xA00000D
IL_004b 28 0e 00 00 0a call 0xA00000E
IL_0050 2a ret getMaxIntrinsicSIMDVectorLength: returning 32
SIMD Candidate Type System.Numerics.Vector`1[System.Single]
Notify VM instruction set (AVX2) must be supported.
Found type SIMD Vector<Float>
lvaGrabTemp returning 2 (V02 tmp0) (a long lifetime temp) called for OutgoingArgSpace.
; Initial local variable assignments
;
; V00 loc0 simd32 ; V01 loc1 struct <StructWithVectorField, 40>
; V02 OutArgs lclBlk <na> "OutgoingArgSpace"
*************** In compInitDebuggingInfo() for Scratch.Program:TestSIMDInit()
getVars() returned cVars = 0, extendOthers = true
info.compVarScopesCount = 2
VarNum LVNum Name Beg End
0: 00h 00h V00 loc0 000h 051h
1: 01h 01h V01 loc1 000h 051h
info.compStmtOffsetsCount = 0
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE )
*************** In fgFindBasicBlocks() for Scratch.Program:TestSIMDInit()
Jump targets:
none
New Basic Block BB01 [0000] created.
BB01 [000..051)
CLFLG_MINOPT set for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
IL Code Size,Instr 81, 18, Basic Block count 1, Local Variable Num,Ref count 3, 5 for method Scratch.Program:TestSIMDInit()
OPTIONS: opts.MinOpts() == true
Basic block list for 'Scratch.Program:TestSIMDInit()'
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Pre-import
*************** Finishing PHASE Pre-import
*************** Starting PHASE Profile incorporation
BBOPT not set
*************** Finishing PHASE Profile incorporation [no changes]
*************** Starting PHASE Importation
*************** In impImport() for Scratch.Program:TestSIMDInit()
impImportBlockPending for BB01
Importing BB01 (PC=000) of 'Scratch.Program:TestSIMDInit()'
[ 0] 0 (0x000) ldloca.s 0
[ 1] 2 (0x002) initobj 1B000001
STMT00000 (IL 0x000... ???)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
[ 0] 8 (0x008) ldloca.s 0
[ 1] 10 (0x00a) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 21 (0x015) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00001 (IL 0x008... ???)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [ 0] 26 (0x01a) ldloca.s 1
[ 1] 28 (0x01c) ldc.i4.0 0
[ 2] 29 (0x01d) stfld 04000001
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
[ 0] 34 (0x022) ldloca.s 1
[ 1] 36 (0x024) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 41 (0x029) initobj 1B000001 Known type SIMD Vector<Float>
Known type SIMD Vector<Float>
STMT00003 (IL 0x022... ???)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
[ 0] 47 (0x02f) ldloca.s 1
[ 1] 49 (0x031) ldflda 04000002 Known type SIMD Vector<Float>
[ 1] 54 (0x036) constrained. (1B000001) callvirt 0A00000B
In Compiler::impImportCall: opcode is callvirt, kind=0, callRetType is ref, structSize is 0
[ 1] 65 (0x041) call 0A00000C
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00004 (IL 0x02F... ???)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [ 0] 70 (0x046) call 0A00000D
In Compiler::impImportCall: opcode is call, kind=0, callRetType is int, structSize is 0
Named Intrinsic System.Numerics.Vector`1.get_Count: Recognized
Notify VM instruction set (SSE2) must be supported.
Known type SIMD Vector<Float>
[ 1] 75 (0x04b) call 0A00000E
In Compiler::impImportCall: opcode is call, kind=0, callRetType is void, structSize is 0
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
[ 0] 80 (0x050) ret
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Importation
Trees after Importation
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 ***** BB01
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Indirect call transform
-- no candidates to transform
*************** Finishing PHASE Indirect call transform [no changes]
*************** Starting PHASE Expand patchpoints
-- no patchpoints to transform
*************** Finishing PHASE Expand patchpoints [no changes]
*************** Starting PHASE Post-import
*************** Finishing PHASE Post-import
*************** Starting PHASE Morph - Init
New BlockSet epoch 1, # of blocks (including unused BB00): 2, bitset array size: 1 (short)
*************** In fgRemoveEmptyBlocks
*************** Finishing PHASE Morph - Init
*************** In fgDebugCheckBBlist
*************** Starting PHASE Morph - Inlining
*************** Finishing PHASE Morph - Inlining [no changes]
*************** Starting PHASE Allocate Objects
no newobjs in this method; punting
*************** Finishing PHASE Allocate Objects [no changes]
*************** Starting PHASE Morph - Add internal blocks
*************** After fgAddInternal()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** Finishing PHASE Morph - Add internal blocks
*************** Starting PHASE Remove empty try
*************** In fgRemoveEmptyTry()
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty try [no changes]
*************** Starting PHASE Remove empty finally
No EH in this method, nothing to remove.
*************** Finishing PHASE Remove empty finally [no changes]
*************** Starting PHASE Merge callfinally chains
No EH in this method, nothing to merge.
*************** Finishing PHASE Merge callfinally chains [no changes]
*************** Starting PHASE Clone finally
No EH in this method, no cloning.
*************** Finishing PHASE Clone finally [no changes]
*************** Starting PHASE Compute preds
Renumbering the basic blocks for fgComputePred
*************** Before renumbering the basic blocks
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** After renumbering the basic blocks
=============== No blocks renumbered!
*************** In fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** After fgComputePreds()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i -----------------------------------------------------------------------------------------------------------------------------------------
*************** Finishing PHASE Compute preds
*************** Starting PHASE Morph - Promote Structs
*************** In fgResetImplicitByRefRefCount()
*************** In fgPromoteStructs()
promotion opt flag not enabled
*************** Finishing PHASE Morph - Promote Structs
*************** Starting PHASE Morph - Structs/AddrExp
*************** In fgMarkAddressExposedLocals()
LocalAddressVisitor visiting statement:
STMT00000 (IL 0x000...0x003)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 [000002] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* ADDR byref [000004] -------N---- \--* LCL_VAR simd32<System.Numerics.Vector`1[Single]> V00 loc0 Local V00 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00001 (IL 0x008...0x01D)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 LocalAddressVisitor visiting statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] -------N---- +--* FIELD int a
[000009] ------------ | \--* ADDR byref [000008] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000010] ------------ \--* CNS_INT int 0
Local V01 should not be enregistered because: was accessed as a local field
LocalAddressVisitor modified statement:
STMT00002 (IL 0x01A... ???)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00003 (IL 0x022...0x02A)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 [000017] ------------ \--* CNS_INT int 0
LocalAddressVisitor visiting statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* ADDR byref [000022] -------N---- \--* FIELD simd32 b
[000021] ------------ \--* ADDR byref [000020] -------N---- \--* LCL_VAR struct<StructWithVectorField, 40> V01 loc1 Local V01 should not be enregistered because: it is address exposed
LocalAddressVisitor modified statement:
STMT00004 (IL 0x02F...0x050)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
LocalAddressVisitor visiting statement:
STMT00005 (IL 0x046... ???)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
LocalAddressVisitor visiting statement:
STMT00006 (IL 0x050... ???)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Structs/AddrExp
*************** Starting PHASE Morph - ByRefs
*************** In fgRetypeImplicitByRefArgs()
*************** Finishing PHASE Morph - ByRefs
*************** Starting PHASE Morph - Global
*************** In fgMorphBlocks()
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Morphing BB01 of 'Scratch.Program:TestSIMDInit()'
fgMorphTree BB01, STMT00000 (before)
[000003] IA---------- * ASG simd32 (init)
[000000] D------N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000002] ------------ \--* CNS_INT int 0
MorphInitBlock:
MorphBlock for dst tree, before:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 MorphBlock after:
[000000] D---G+-N---- * LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 PrepareDst for [000000] have found a local var V00.
MorphInitBlock (after):
[000003] -A--G------- * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00000 (after)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00001 (before)
[000007] --C-G------- * CALL void System.Console.WriteLine
[000006] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Initializing arg info for 7.CALL:
ArgTable for 7.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 7.CALL:
Initializing arg info for 6.CALL:
ArgTable for 6.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 6.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000005] -----+------ * LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000030] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 6.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 5.LCL_VAR_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000006] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 Replaced with placeholder node:
[000031] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 7.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 6.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00001 (after)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 fgMorphTree BB01, STMT00002 (before)
[000012] -A---------- * ASG int [000011] U------N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] ------------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (before)
[000019] IA--G------- * ASG simd32 (init)
[000018] ----G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000016] ------------ | \--* ADDR byref [000015] -------N---- | \--* FIELD simd32 b
[000014] ------------ | \--* ADDR byref [000013] -------N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000017] ------------ \--* CNS_INT int 0
Final value of Compiler::fgMorphField after calling fgMorphSmpOp:
[000015] *------N---- * IND simd32
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] ----G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphInitBlock:
MorphBlock for dst tree, before:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
MorphBlock after:
[000018] n---G+-N---- * BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ \--* ADD byref [000014] -----+------ +--* ADDR byref [000013] U---G+-N---- | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ \--* CNS_INT long 8 field offset Fseq[b]
PrepareDst for [000018] have found a local var V01.
Local V01 should not be enregistered because: written in a block op
MorphInitBlock (after):
[000019] IA--G------- * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00003 (after)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
fgMorphTree BB01, STMT00004 (before)
[000025] --C-G------- * CALL void System.Console.WriteLine
[000024] --C-G------- arg0 \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Initializing arg info for 25.CALL:
ArgTable for 25.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 25.CALL:
Initializing arg info for 24.CALL:
ArgTable for 24.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 24.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000023] -----+------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000034] ----------L- * ARGPLACE byref Shuffled argument table: rcx ArgTable for 24.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 23.LCL_FLD_ADDR byref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000024] --CXG+------ * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
Replaced with placeholder node:
[000035] ----------L- * ARGPLACE ref Shuffled argument table: rcx ArgTable for 25.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 24.CALL ref (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00004 (after)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
fgMorphTree BB01, STMT00005 (before)
[000027] --C-G------- * CALL void System.Console.WriteLine
[000026] ------------ arg0 \--* CNS_INT int 8 vector element count
Initializing arg info for 27.CALL:
ArgTable for 27.CALL after fgInitArgInfo:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8]
Morphing args for 27.CALL:
argSlots=1, preallocatedArgCount=4, nextSlotNum=4, nextSlotByteOffset=32, outgoingArgSpaceSize=32
Sorting the arguments:
Deferred argument ('rcx'):
[000026] -----+------ * CNS_INT int 8 vector element count
Replaced with placeholder node:
[000036] ----------L- * ARGPLACE int Shuffled argument table: rcx ArgTable for 27.CALL after fgMorphArgs:
fgArgTabEntry[arg 0 26.CNS_INT int (By ref), 1 reg: rcx, byteAlignment=8, lateArgInx=0, processed]
fgMorphTree BB01, STMT00005 (after)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
fgMorphTree BB01, STMT00006 (before)
[000028] ------------ * RETURN void *************** Finishing PHASE Morph - Global
Trees after Morph - Global
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
[000003] -A--G+------ * ASG simd32 (copy)
[000000] D---G+-N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000029] ------------ \--* SIMD simd32 float init
[000002] -----+------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
[000007] --CXG+------ * CALL void System.Console.WriteLine
[000006] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000005] -----+------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
[000012] -A--G+------ * ASG int [000011] U---G+-N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
[000010] -----+------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
[000019] IA--G+------ * ASG simd32 (init)
[000018] n---G+-N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
[000033] -----+------ | \--* ADD byref [000014] -----+------ | +--* ADDR byref [000013] U---G+-N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 [000032] -----+------ | \--* CNS_INT long 8 field offset Fseq[b]
[000017] -----+------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
[000025] --CXG+------ * CALL void System.Console.WriteLine
[000024] --CXG+------ arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
[000023] -----+------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
[000027] --CXG+------ * CALL void System.Console.WriteLine
[000026] -----+------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
[000028] -----+------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE GS Cookie
No GS security needed
*************** Finishing PHASE GS Cookie
*************** Starting PHASE Compute edge weights (1, false)
*************** In fgComputeBlockAndEdgeWeights()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
-- no profile data, so using default called count
-- not optimizing or no profile data, so not computing edge weights
*************** Finishing PHASE Compute edge weights (1, false)
*************** Starting PHASE Create EH funclets
*************** In fgCreateFunclets()
After fgCreateFunclets()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
*************** Exception Handling table is empty
*************** In fgDebugCheckBBlist
*************** Finishing PHASE Create EH funclets
*************** Starting PHASE Mark local vars
*************** In lvaMarkLocalVars()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Mark local vars
*************** Starting PHASE Find oper order
*************** In fgFindOperOrder()
*************** Finishing PHASE Find oper order
*************** Starting PHASE Set block order
*************** In fgSetBlockOrder()
The biggest BB has 7 tree nodes
*************** Finishing PHASE Set block order
*************** Starting PHASE Insert GC Polls
*************** Finishing PHASE Insert GC Polls [no changes]
*************** Starting PHASE Determine first cold block
*************** In fgDetermineFirstColdBlock()
No procedure splitting will be done for this method
*************** Finishing PHASE Determine first cold block
Trees before Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
***** BB01
STMT00000 (IL 0x000...0x003)
N004 ( 6, 5) [000003] -A--G---R--- * ASG simd32 (copy)
N003 ( 3, 2) [000000] D---G--N---- +--* LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 N002 ( 2, 2) [000029] ------------ \--* SIMD simd32 float init
N001 ( 1, 1) [000002] ------------ \--* CNS_INT int 0
***** BB01
STMT00001 (IL 0x008...0x01D)
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000006] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000005] ------------ this in rcx \--* LCL_VAR_ADDR byref V00 loc0 ***** BB01
STMT00002 (IL 0x01A... ???)
N003 ( 5, 6) [000012] -A--G---R--- * ASG int N002 ( 3, 4) [000011] U---G--N---- +--* LCL_FLD int V01 loc1 [+0] Fseq[a]
N001 ( 1, 1) [000010] ------------ \--* CNS_INT int 0
***** BB01
STMT00003 (IL 0x022...0x02A)
N007 ( 10, 9) [000019] IA--G---R--- * ASG simd32 (init)
N006 ( 8, 7) [000018] n---G--N---- +--* BLK simd32<System.Numerics.Vector`1[Single]>
N005 ( 5, 5) [000033] ------------ | \--* ADD byref N003 ( 3, 3) [000014] ------------ | +--* ADDR byref N002 ( 3, 2) [000013] U---G--N---- | | \--* LCL_VAR struct<StructWithVectorField, 40>(AX) V01 loc1 N004 ( 1, 1) [000032] ------------ | \--* CNS_INT long 8 field offset Fseq[b]
N001 ( 1, 1) [000017] ------------ \--* CNS_INT int 0
***** BB01
STMT00004 (IL 0x02F...0x050)
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
N004 ( 17, 10) [000024] --CXG------- arg0 in rcx \--* CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
N003 ( 3, 3) [000023] ------------ this in rcx \--* LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
***** BB01
STMT00005 (IL 0x046... ???)
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
N002 ( 1, 1) [000026] ------------ arg0 in rcx \--* CNS_INT int 8 vector element count
***** BB01
STMT00006 (IL 0x050... ???)
N001 ( 0, 0) [000028] ------------ * RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Rationalize IR
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X)
N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X)
N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR:
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 Rewriting GT_ASG(BLK(X), Y) to STORE_BLK(X,Y):
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
*************** Finishing PHASE Rationalize IR
Trees after Rationalize IR
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
*************** Starting PHASE Do 'simple' lowering
Bumping outgoingArgSpaceSize to 32 for call [000006]
outgoingArgSpaceSize 32 sufficient for call [000007], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000024], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000025], which needs 32
outgoingArgSpaceSize 32 sufficient for call [000027], which needs 32
*************** Finishing PHASE Do 'simple' lowering
*************** In fgDebugCheckBBlist
Trees before Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] ------------ t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] ------------ t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 N004 ( 1, 1) [000032] ------------ t32 = CNS_INT long 8 field offset Fseq[b]
/--* t13 byref +--* t32 long N005 ( 5, 5) [000033] ------------ t33 = * ADD byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Lowering nodeinfo
compEnregLocals() is false, setting doNotEnreg flag for all locals.
Local V00 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V01 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
Local V02 should not be enregistered because: opts.compFlags & CLFLG_REGVAR is not set
lowering store lcl var/field (before):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 lowering store lcl var/field (after):
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 Local V00 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000030] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 new node is : [000044] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000031] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000045] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
lowering store lcl var/field (before):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
lowering store lcl var/field (after):
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
Local V01 should not be enregistered because: written in a block op
Addressing mode:
Base
N002 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 + 8
Removing unused node:
N004 ( 1, 1) [000032] -c---------- * CNS_INT long 8 field offset Fseq[b]
New addressing mode node:
N005 ( 5, 5) [000033] ------------ * LEA(b+8) byref Local V01 should not be enregistered because: written in a block op
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
objp:
======
lowering arg : N002 ( 0, 0) [000034] ----------L- * ARGPLACE byref args:
======
late:
======
lowering arg : N003 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
new node is : [000046] ------------ * PUTARG_REG byref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
lowering call (before):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000035] ----------L- * ARGPLACE ref late:
======
lowering arg : N004 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
new node is : [000047] --CXG------- * PUTARG_REG ref REG rcx
lowering call (after):
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
lowering call (before):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
objp:
======
args:
======
lowering arg : N001 ( 0, 0) [000036] ----------L- * ARGPLACE int late:
======
lowering arg : N002 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count
new node is : [000048] ------------ * PUTARG_REG int REG rcx
lowering call (after):
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
lowering GT_RETURN
N001 ( 0, 0) [000028] ------------ * RETURN void ============Lower has completed modifying nodes.
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*** lvaComputeRefCounts ***
*************** In fgLocalVarLiveness()
; Initial local variable assignments
;
; V00 loc0 simd32 do-not-enreg[XSB] addr-exposed ld-addr-op
; V01 loc1 struct <StructWithVectorField, 40> do-not-enreg[XSFB] addr-exposed ld-addr-op
; V02 OutArgs lclBlk <32> do-not-enreg[] "OutgoingArgSpace"
In fgLocalVarLivenessInit
*************** In fgPerBlockLocalVarLiveness()
*************** In fgInterBlockLocalVarLiveness()
*** lvaComputeRefCounts ***
*************** Finishing PHASE Lowering nodeinfo
Trees after Lowering nodeinfo
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** In fgDebugCheckBBlist
Trees before Calculate stack level slots
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
[000037] ------------ IL_OFFSET void IL offset: 0x0
N001 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0
/--* t2 int N002 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init
/--* t29 simd32 N004 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 [000038] ------------ IL_OFFSET void IL offset: 0x8
N003 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 /--* t5 byref [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N004 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t6 ref [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N005 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine
[000039] ------------ IL_OFFSET void IL offset: 0x1a
N001 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0
/--* t10 int N003 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a]
[000040] ------------ IL_OFFSET void IL offset: 0x22
N001 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0
N002 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 /--* t13 byref N005 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref /--* t33 byref +--* t17 int N006 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll)
[000041] ------------ IL_OFFSET void IL offset: 0x2f
N003 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b]
/--* t23 byref [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N004 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString
/--* t24 ref [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N005 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine
[000042] ------------ IL_OFFSET void IL offset: 0x46
N002 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count
/--* t26 int [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N003 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine
[000043] ------------ IL_OFFSET void IL offset: 0x50
N001 ( 0, 0) [000028] ------------ RETURN void -------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Calculate stack level slots
*************** Finishing PHASE Calculate stack level slots [no changes]
*************** Starting PHASE Linear scan register alloc
Clearing modified regs.
buildIntervals ========
-----------------
LIVENESS:
-----------------
BB01 use def in out
{}
{}
{}
{}
FP callee save candidate vars: None
floatVarCount = 0; hasLoops = 0, singleExit = 1
TUPLE STYLE DUMP BEFORE LSRA
Start LSRA Block Sequence: Current block: BB01
Final LSRA Block Sequence: BB01( 1 ) BB01 [000..051) (return), preds={} succs={}
=====
N000. IL_OFFSET IL offset: 0x0
N001. CNS_INT 0
N002. t29 = SIMD N004. V00 MEM; t29
N000. IL_OFFSET IL offset: 0x8
N003. t5 = LCL_VAR_ADDR V00 loc0 N000. t44 = PUTARG_REG; t5
N004. t6 = CALL ; t44
N000. t45 = PUTARG_REG; t6
N005. CALL ; t45
N000. IL_OFFSET IL offset: 0x1a
N001. t10 = CNS_INT 0
N003. V01 MEM; t10
N000. IL_OFFSET IL offset: 0x22
N001. CNS_INT 0
N002. t13 = LCL_VAR_ADDR V01 loc1 N005. t33 = LEA(b+8) ; t13
N006. STORE_BLK; t33
N000. IL_OFFSET IL offset: 0x2f
N003. t23 = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b]
N000. t46 = PUTARG_REG; t23
N004. t24 = CALL ; t46
N000. t47 = PUTARG_REG; t24
N005. CALL ; t47
N000. IL_OFFSET IL offset: 0x46
N002. t26 = CNS_INT 8 vector element count
N000. t48 = PUTARG_REG; t26
N003. CALL ; t48
N000. IL_OFFSET IL offset: 0x50
N001. RETURN buildIntervals second part ========
NEW BLOCK BB01
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
DefList: { }
N002 (???,???) [000037] ------------ * IL_OFFSET void IL offset: 0x0 REG NA
DefList: { }
N004 ( 1, 1) [000002] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N006 ( 2, 2) [000029] ------------ * SIMD simd32 float init REG NA
Interval 0: simd32 RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
DefList: { N006.t29. SIMD }
N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
DefList: { }
N010 (???,???) [000038] ------------ * IL_OFFSET void IL offset: 0x8 REG NA
DefList: { }
N012 ( 3, 3) [000005] ------------ * LCL_VAR_ADDR byref V00 loc0 NA REG NA
Interval 1: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N012.t5. LCL_VAR_ADDR }
N014 (???,???) [000044] ------------ * PUTARG_REG byref REG rcx
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 2: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N014.t44. PUTARG_REG }
N016 ( 17, 10) [000006] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 3: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N016.t6. CALL }
N018 (???,???) [000045] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 4: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N018.t45. PUTARG_REG }
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N022 (???,???) [000039] ------------ * IL_OFFSET void IL offset: 0x1a REG NA
DefList: { }
N024 ( 1, 1) [000010] ------------ * CNS_INT int 0 REG NA
Interval 5: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N024.t10. CNS_INT }
N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
DefList: { }
N028 (???,???) [000040] ------------ * IL_OFFSET void IL offset: 0x22 REG NA
DefList: { }
N030 ( 1, 1) [000017] -c---------- * CNS_INT int 0 REG NA
Contained
DefList: { }
N032 ( 3, 2) [000013] U------N---- * LCL_VAR_ADDR byref V01 loc1 NA REG NA
Interval 6: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N032.t13. LCL_VAR_ADDR }
N034 ( 5, 5) [000033] -c---------- * LEA(b+8) byref REG NA
Contained
DefList: { N032.t13. LCL_VAR_ADDR }
N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Interval 7: float RefPositions {} physReg:NA Preferences=[allFloat]
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
DefList: { }
N038 (???,???) [000041] ------------ * IL_OFFSET void IL offset: 0x2f REG NA
DefList: { }
N040 ( 3, 3) [000023] ------------ * LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] NA REG NA
Interval 8: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N040.t23. LCL_FLD_ADDR }
N042 (???,???) [000046] ------------ * PUTARG_REG byref REG rcx
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 9: byref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N042.t46. PUTARG_REG }
N044 ( 17, 10) [000024] --CXG------- * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG NA
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
Interval 10: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
DefList: { N044.t24. CALL }
N046 (???,???) [000047] --CXG------- * PUTARG_REG ref REG rcx
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 11: ref RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N046.t47. PUTARG_REG }
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N050 (???,???) [000042] ------------ * IL_OFFSET void IL offset: 0x46 REG NA
DefList: { }
N052 ( 1, 1) [000026] ------------ * CNS_INT int 8 vector element count REG NA
Interval 12: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
DefList: { N052.t26. CNS_INT }
N054 (???,???) [000048] ------------ * PUTARG_REG int REG rcx
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
Interval 13: int RefPositions {} physReg:NA Preferences=[allIntButFP]
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
DefList: { N054.t48. PUTARG_REG }
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 wt=100.00>
DefList: { }
N058 (???,???) [000043] ------------ * IL_OFFSET void IL offset: 0x50 REG NA
DefList: { }
N060 ( 0, 0) [000028] ------------ * RETURN void REG NA
Linear scan intervals BEFORE VALIDATING INTERVALS:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE VALIDATING INTERVALS: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
TUPLE STYLE DUMP WITH REF POSITIONS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. SIMD Def:<I0>(#1)
N008. V00 MEM
Use:<I0>(#2) *
N010. IL_OFFSET IL offset: 0x8
N012. LCL_VAR_ADDR V00 loc0 NA
Def:<I1>(#3)
N014. PUTARG_REG
Use:<I1>(#5) Fixed:rcx(#4) *
Def:<I2>(#7) rcx
N016. CALL Use:<I2>(#9) Fixed:rcx(#8) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I3>(#24) rax
N018. PUTARG_REG
Use:<I3>(#26) Fixed:rcx(#25) *
Def:<I4>(#28) rcx
N020. CALL Use:<I4>(#30) Fixed:rcx(#29) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N022. IL_OFFSET IL offset: 0x1a
N024. CNS_INT 0
Def:<I5>(#44)
N026. V01 MEM
Use:<I5>(#45) *
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. LCL_VAR_ADDR V01 loc1 NA
Def:<I6>(#46)
N034. LEA(b+8) N036. STORE_BLK
Def:<T7>(#47)
Use:<I6>(#48) *
Use:<T7>(#49) *
N038. IL_OFFSET IL offset: 0x2f
N040. LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] NA
Def:<I8>(#50)
N042. PUTARG_REG
Use:<I8>(#52) Fixed:rcx(#51) *
Def:<I9>(#54) rcx
N044. CALL Use:<I9>(#56) Fixed:rcx(#55) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 Def:<I10>(#71) rax
N046. PUTARG_REG
Use:<I10>(#73) Fixed:rcx(#72) *
Def:<I11>(#75) rcx
N048. CALL Use:<I11>(#77) Fixed:rcx(#76) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N050. IL_OFFSET IL offset: 0x46
N052. CNS_INT 8 vector element count
Def:<I12>(#91)
N054. PUTARG_REG
Use:<I12>(#93) Fixed:rcx(#92) *
Def:<I13>(#95) rcx
N056. CALL Use:<I13>(#97) Fixed:rcx(#96) *
Kill: rax rcx rdx r8 r9 r10 r11 mm0 mm1 mm2 mm3 mm4 mm5 N058. IL_OFFSET IL offset: 0x50
N060. RETURN Linear scan intervals after buildIntervals:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
*************** In LinearScan::allocateRegisters()
Linear scan intervals before allocateRegisters:
Interval 0: simd32 RefPositions {#1@7 #2@8} physReg:NA Preferences=[allFloat]
Interval 1: byref RefPositions {#3@13 #5@14} physReg:NA Preferences=[rcx]
Interval 2: byref RefPositions {#7@15 #9@16} physReg:NA Preferences=[rcx]
Interval 3: ref (def-use conflict) RefPositions {#24@17 #26@18} physReg:NA Preferences=[rax rcx]
Interval 4: ref RefPositions {#28@19 #30@20} physReg:NA Preferences=[rcx]
Interval 5: int (constant) RefPositions {#44@25 #45@26} physReg:NA Preferences=[allIntButFP]
Interval 6: byref RefPositions {#46@33 #48@36} physReg:NA Preferences=[allIntButFP]
Interval 7: float (INTERNAL) RefPositions {#47@36 #49@36} physReg:NA Preferences=[allFloat]
Interval 8: byref RefPositions {#50@41 #52@42} physReg:NA Preferences=[rcx]
Interval 9: byref RefPositions {#54@43 #56@44} physReg:NA Preferences=[rcx]
Interval 10: ref (def-use conflict) RefPositions {#71@45 #73@46} physReg:NA Preferences=[rax rcx]
Interval 11: ref RefPositions {#75@47 #77@48} physReg:NA Preferences=[rcx]
Interval 12: int (constant) RefPositions {#91@53 #93@54} physReg:NA Preferences=[rcx]
Interval 13: int RefPositions {#95@55 #97@56} physReg:NA Preferences=[rcx]
------------
REFPOSITIONS BEFORE ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[allFloat] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[allIntButFP] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[allIntButFP] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[allFloat] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Allocating Registers
--------------------
The following table has one or more rows for each RefPosition that is handled during allocation.
The first column provides the basic information about the RefPosition, with its type (e.g. Def,
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the
action taken during allocation (e.g. Alloc a new register, or Keep an existing one).
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is
active, a 'p' if it is a large vector that has been partially spilled, and 'i'if it is inactive.
Columns are only printed up to the last modifed register, which may increase during allocation,
in which case additional columns will appear. Registers which are not marked modified have ---- in their column.
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| | | | | | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def ORDER(A) mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 a| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 a| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 a| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
18.#26 I3 Use * Copy rcx |I3 a|I3 a| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 a| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def BSFIT(A) rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 a| | | | | | | | | | | | |
33.#46 I6 Def BSFIT(A) rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def ORDER(A) mm0 | |I6 a| | | | | | | |I7 a| | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
36.#48 I6 Use * Keep rcx | |I6 a| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | |I6 a| | | | | | | |I7 a| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 a| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 a| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def DUconflict | | | | | | | | | | | | | | |
Case #6 need a copy | | | | | | | | | | | | | | |
Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
46.#73 I10 Use * Copy rcx |I10a|I10a| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11a| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12a| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
56.#97 I13 Use * Keep rcx | |I13a| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
------------
REFPOSITIONS AFTER ALLOCATION: ------------
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1 wt=100.00>
<RefPosition #1 @7 RefTypeDef <Ivl:0> SIMD BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #2 @8 RefTypeUse <Ivl:0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #3 @13 RefTypeDef <Ivl:1> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #4 @14 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #5 @14 RefTypeUse <Ivl:1> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #6 @15 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #7 @15 RefTypeDef <Ivl:2> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #8 @16 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #9 @16 RefTypeUse <Ivl:2> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #10 @17 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #11 @17 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #12 @17 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #13 @17 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #14 @17 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #15 @17 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #16 @17 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #17 @17 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #18 @17 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #19 @17 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #20 @17 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #21 @17 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #22 @17 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #23 @17 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #24 @17 RefTypeDef <Ivl:3> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #25 @18 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #26 @18 RefTypeUse <Ivl:3> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #27 @19 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #28 @19 RefTypeDef <Ivl:4> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #29 @20 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #30 @20 RefTypeUse <Ivl:4> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #31 @21 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #32 @21 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #33 @21 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #34 @21 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #35 @21 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #36 @21 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #37 @21 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #38 @21 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #39 @21 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #40 @21 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #41 @21 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #42 @21 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #43 @21 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #44 @25 RefTypeDef <Ivl:5> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #45 @26 RefTypeUse <Ivl:5> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #46 @33 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #47 @36 RefTypeDef <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 wt=400.00>
<RefPosition #48 @36 RefTypeUse <Ivl:6> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #49 @36 RefTypeUse <Ivl:7 internal> STORE_BLK BB01 regmask=[mm0] minReg=1 last wt=400.00>
<RefPosition #50 @41 RefTypeDef <Ivl:8> LCL_FLD_ADDR BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #51 @42 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #52 @42 RefTypeUse <Ivl:8> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #53 @43 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #54 @43 RefTypeDef <Ivl:9> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #55 @44 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #56 @44 RefTypeUse <Ivl:9> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #57 @45 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #58 @45 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #59 @45 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #60 @45 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #61 @45 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #62 @45 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #63 @45 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #64 @45 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #65 @45 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #66 @45 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #67 @45 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #68 @45 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #69 @45 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #70 @45 RefTypeFixedReg <Reg:rax> BB01 regmask=[rax] minReg=1 wt=100.00>
<RefPosition #71 @45 RefTypeDef <Ivl:10> CALL BB01 regmask=[rax] minReg=1 fixed wt=400.00>
<RefPosition #72 @46 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #73 @46 RefTypeUse <Ivl:10> BB01 regmask=[rcx] minReg=1 last move fixed wt=100.00>
<RefPosition #74 @47 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #75 @47 RefTypeDef <Ivl:11> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #76 @48 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #77 @48 RefTypeUse <Ivl:11> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #78 @49 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #79 @49 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #80 @49 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #81 @49 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #82 @49 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #83 @49 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #84 @49 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #85 @49 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #86 @49 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #87 @49 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #88 @49 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #89 @49 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #90 @49 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
<RefPosition #91 @53 RefTypeDef <Ivl:12> CNS_INT BB01 regmask=[rcx] minReg=1 wt=400.00>
<RefPosition #92 @54 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #93 @54 RefTypeUse <Ivl:12> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #94 @55 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #95 @55 RefTypeDef <Ivl:13> PUTARG_REG BB01 regmask=[rcx] minReg=1 fixed wt=400.00>
<RefPosition #96 @56 RefTypeFixedReg <Reg:rcx> BB01 regmask=[rcx] minReg=1 wt=100.00>
<RefPosition #97 @56 RefTypeUse <Ivl:13> BB01 regmask=[rcx] minReg=1 last fixed wt=100.00>
<RefPosition #98 @57 RefTypeKill <Reg:rax> BB01 regmask=[rax] minReg=1 last wt=100.00>
<RefPosition #99 @57 RefTypeKill <Reg:rcx> BB01 regmask=[rcx] minReg=1 last wt=100.00>
<RefPosition #100 @57 RefTypeKill <Reg:rdx> BB01 regmask=[rdx] minReg=1 last wt=100.00>
<RefPosition #101 @57 RefTypeKill <Reg:r8 > BB01 regmask=[r8] minReg=1 last wt=100.00>
<RefPosition #102 @57 RefTypeKill <Reg:r9 > BB01 regmask=[r9] minReg=1 last wt=100.00>
<RefPosition #103 @57 RefTypeKill <Reg:r10> BB01 regmask=[r10] minReg=1 last wt=100.00>
<RefPosition #104 @57 RefTypeKill <Reg:r11> BB01 regmask=[r11] minReg=1 last wt=100.00>
<RefPosition #105 @57 RefTypeKill <Reg:mm0> BB01 regmask=[mm0] minReg=1 last wt=100.00>
<RefPosition #106 @57 RefTypeKill <Reg:mm1> BB01 regmask=[mm1] minReg=1 last wt=100.00>
<RefPosition #107 @57 RefTypeKill <Reg:mm2> BB01 regmask=[mm2] minReg=1 last wt=100.00>
<RefPosition #108 @57 RefTypeKill <Reg:mm3> BB01 regmask=[mm3] minReg=1 last wt=100.00>
<RefPosition #109 @57 RefTypeKill <Reg:mm4> BB01 regmask=[mm4] minReg=1 last wt=100.00>
<RefPosition #110 @57 RefTypeKill <Reg:mm5> BB01 regmask=[mm5] minReg=1 last wt=100.00>
Active intervals at end of allocation:
Trees after linear scan register allocator (LSRA)
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
------------ BB01 [000..051) (return), preds={} succs={}
N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
/--* t29 simd32 N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
/--* t5 byref N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
/--* t44 byref this in rcx
N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t6 ref [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
/--* t45 ref arg0 in rcx
N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
/--* t10 int N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
/--* t13 byref N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
/--* t23 byref N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
/--* t46 byref this in rcx
N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
/--* t24 ref [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
/--* t47 ref arg0 in rcx
N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
/--* t26 int N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
N060 ( 0, 0) [000028] ------------ RETURN void REG NA
-------------------------------------------------------------------------------------------------------------------
Final allocation
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
LocRP# Name Type Action Reg |rax |rcx |rdx |rbx |rbp |rsi |rdi |r8 |r9 |mm0 |mm1 |mm2 |mm6 |mm7 |
----------------------------------+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
0.#0 BB1 PredBB0 | | | | | | | | | | | | | | |
7.#1 I0 Def Alloc mm0 | | | | | | | | | |I0 a| | | | |
8.#2 I0 Use * Keep mm0 | | | | | | | | | |I0 i| | | | |
13.#3 I1 Def Alloc rcx | |I1 a| | | | | | | | | | | | |
14.#4 rcx Fixd Keep rcx | |I1 a| | | | | | | | | | | | |
14.#5 I1 Use * Keep rcx | |I1 i| | | | | | | | | | | | |
15.#6 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
15.#7 I2 Def Alloc rcx | |I2 a| | | | | | | | | | | | |
16.#8 rcx Fixd Keep rcx | |I2 a| | | | | | | | | | | | |
16.#9 I2 Use * Keep rcx | |I2 i| | | | | | | | | | | | |
17.#10 rax Kill Keep rax | | | | | | | | | | | | | | |
17.#11 rcx Kill Keep rcx | | | | | | | | | | | | | | |
17.#12 rdx Kill Keep rdx | | | | | | | | | | | | | | |
17.#13 r8 Kill Keep r8 | | | | | | | | | | | | | | |
17.#14 r9 Kill Keep r9 | | | | | | | | | | | | | | |
17.#15 r10 Kill Keep r10 | | | | | | | | | | | | | | |
17.#16 r11 Kill Keep r11 | | | | | | | | | | | | | | |
17.#17 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
17.#18 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
17.#19 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
17.#20 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
17.#21 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
17.#22 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
17.#23 rax Fixd Keep rax | | | | | | | | | | | | | | |
17.#24 I3 Def Alloc rax |I3 a| | | | | | | | | | | | | |
18.#25 rcx Fixd Keep rcx |I3 a| | | | | | | | | | | | | |
Move rcx | |I3 i| | | | | | | | | | | | |
19.#27 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
19.#28 I4 Def Alloc rcx | |I4 a| | | | | | | | | | | | |
20.#29 rcx Fixd Keep rcx | |I4 a| | | | | | | | | | | | |
20.#30 I4 Use * Keep rcx | |I4 i| | | | | | | | | | | | |
21.#31 rax Kill Keep rax | | | | | | | | | | | | | | |
21.#32 rcx Kill Keep rcx | | | | | | | | | | | | | | |
21.#33 rdx Kill Keep rdx | | | | | | | | | | | | | | |
21.#34 r8 Kill Keep r8 | | | | | | | | | | | | | | |
21.#35 r9 Kill Keep r9 | | | | | | | | | | | | | | |
21.#36 r10 Kill Keep r10 | | | | | | | | | | | | | | |
21.#37 r11 Kill Keep r11 | | | | | | | | | | | | | | |
21.#38 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
21.#39 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
21.#40 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
21.#41 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
21.#42 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
21.#43 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
25.#44 C5 Def Alloc rcx | |C5 a| | | | | | | | | | | | |
26.#45 C5 Use * Keep rcx | |C5 i| | | | | | | | | | | | |
33.#46 I6 Def Alloc rcx | |I6 a| | | | | | | | | | | | |
36.#47 I7 Def Alloc mm0 | |I6 a| | | | | | | |I7 a| | | | |
36.#48 I6 Use * Keep rcx | |I6 i| | | | | | | |I7 a| | | | |
36.#49 I7 Use * Keep mm0 | | | | | | | | | |I7 i| | | | |
41.#50 I8 Def Alloc rcx | |I8 a| | | | | | | | | | | | |
42.#51 rcx Fixd Keep rcx | |I8 a| | | | | | | | | | | | |
42.#52 I8 Use * Keep rcx | |I8 i| | | | | | | | | | | | |
43.#53 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
43.#54 I9 Def Alloc rcx | |I9 a| | | | | | | | | | | | |
44.#55 rcx Fixd Keep rcx | |I9 a| | | | | | | | | | | | |
44.#56 I9 Use * Keep rcx | |I9 i| | | | | | | | | | | | |
45.#57 rax Kill Keep rax | | | | | | | | | | | | | | |
45.#58 rcx Kill Keep rcx | | | | | | | | | | | | | | |
45.#59 rdx Kill Keep rdx | | | | | | | | | | | | | | |
45.#60 r8 Kill Keep r8 | | | | | | | | | | | | | | |
45.#61 r9 Kill Keep r9 | | | | | | | | | | | | | | |
45.#62 r10 Kill Keep r10 | | | | | | | | | | | | | | |
45.#63 r11 Kill Keep r11 | | | | | | | | | | | | | | |
45.#64 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
45.#65 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
45.#66 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
45.#67 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
45.#68 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
45.#69 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
45.#70 rax Fixd Keep rax | | | | | | | | | | | | | | |
45.#71 I10 Def Alloc rax |I10a| | | | | | | | | | | | | |
46.#72 rcx Fixd Keep rcx |I10a| | | | | | | | | | | | | |
Move rcx | |I10i| | | | | | | | | | | | |
47.#74 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
47.#75 I11 Def Alloc rcx | |I11a| | | | | | | | | | | | |
48.#76 rcx Fixd Keep rcx | |I11a| | | | | | | | | | | | |
48.#77 I11 Use * Keep rcx | |I11i| | | | | | | | | | | | |
49.#78 rax Kill Keep rax | | | | | | | | | | | | | | |
49.#79 rcx Kill Keep rcx | | | | | | | | | | | | | | |
49.#80 rdx Kill Keep rdx | | | | | | | | | | | | | | |
49.#81 r8 Kill Keep r8 | | | | | | | | | | | | | | |
49.#82 r9 Kill Keep r9 | | | | | | | | | | | | | | |
49.#83 r10 Kill Keep r10 | | | | | | | | | | | | | | |
49.#84 r11 Kill Keep r11 | | | | | | | | | | | | | | |
49.#85 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
49.#86 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
49.#87 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
49.#88 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
49.#89 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
49.#90 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
53.#91 C12 Def Alloc rcx | |C12a| | | | | | | | | | | | |
54.#92 rcx Fixd Keep rcx | |C12a| | | | | | | | | | | | |
54.#93 C12 Use * Keep rcx | |C12i| | | | | | | | | | | | |
55.#94 rcx Fixd Keep rcx | | | | | | | | | | | | | | |
55.#95 I13 Def Alloc rcx | |I13a| | | | | | | | | | | | |
56.#96 rcx Fixd Keep rcx | |I13a| | | | | | | | | | | | |
56.#97 I13 Use * Keep rcx | |I13i| | | | | | | | | | | | |
57.#98 rax Kill Keep rax | | | | | | | | | | | | | | |
57.#99 rcx Kill Keep rcx | | | | | | | | | | | | | | |
57.#100 rdx Kill Keep rdx | | | | | | | | | | | | | | |
57.#101 r8 Kill Keep r8 | | | | | | | | | | | | | | |
57.#102 r9 Kill Keep r9 | | | | | | | | | | | | | | |
57.#103 r10 Kill Keep r10 | | | | | | | | | | | | | | |
57.#104 r11 Kill Keep r11 | | | | | | | | | | | | | | |
57.#105 mm0 Kill Keep mm0 | | | | | | | | | | | | | | |
57.#106 mm1 Kill Keep mm1 | | | | | | | | | | | | | | |
57.#107 mm2 Kill Keep mm2 | | | | | | | | | | | | | | |
57.#108 mm3 Kill Keep mm3 | | | | | | | | | | | | | | |
57.#109 mm4 Kill Keep mm4 | | | | | | | | | | | | | | |
57.#110 mm5 Kill Keep mm5 | | | | | | | | | | | | | | |
Recording the maximum number of concurrent spills:
----------
LSRA Stats
----------
Register selection order: ABCDEFGHIJKLMNOPQ
Total Tracked Vars: 0
Total Reg Cand Vars: 0
Total number of Intervals: 13
Total number of RefPositions: 110
Total Number of spill temps created: 0
..........
BB01 [ 100.00]: CopyReg = 2, BEST_FIT = 2, REG_ORDER = 2
..........
Total SpillCount : 0 Weighted: 0.000000
Total CopyReg : 2 Weighted: 200.000000
Total ResolutionMovs : 0 Weighted: 0.000000
Total SplitEdges : 0 Weighted: 0.000000
..........
Total BEST_FIT [#11] : 2 Weighted: 200.000000
Total REG_ORDER [#13] : 2 Weighted: 200.000000
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS
Incoming Parameters: BB01 [000..051) (return), preds={} succs={}
=====
N002. IL_OFFSET IL offset: 0x0
N004. CNS_INT 0
N006. mm0 = SIMD N008. V00 MEM; mm0
N010. IL_OFFSET IL offset: 0x8
N012. rcx = LCL_VAR_ADDR V00 loc0 rcx
N014. rcx = PUTARG_REG; rcx
N016. rax = CALL ; rcx
N000. rcx = COPY ; rax
N018. rcx = PUTARG_REG; rcx
N020. CALL ; rcx
N022. IL_OFFSET IL offset: 0x1a
N024. rcx = CNS_INT 0
N026. V01 MEM; rcx
N028. IL_OFFSET IL offset: 0x22
N030. CNS_INT 0
N032. rcx = LCL_VAR_ADDR V01 loc1 rcx
N034. STK = LEA(b+8) ; rcx
N036. STORE_BLK; STK
N038. IL_OFFSET IL offset: 0x2f
N040. rcx = LCL_FLD_ADDR V01 loc1 [+8] Fseq[b] rcx
N042. rcx = PUTARG_REG; rcx
N044. rax = CALL ; rcx
N000. rcx = COPY ; rax
N046. rcx = PUTARG_REG; rcx
N048. CALL ; rcx
N050. IL_OFFSET IL offset: 0x46
N052. rcx = CNS_INT 8 vector element count
N054. rcx = PUTARG_REG; rcx
N056. CALL ; rcx
N058. IL_OFFSET IL offset: 0x50
N060. RETURN *************** Finishing PHASE Linear scan register alloc
*************** In genGenerateCode()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
*************** Starting PHASE Generate code
*************** In fgDebugCheckBBlist
Finalizing stack frame
must init V00 because compInitMem is set and it is not a temp
must init V01 because compInitMem is set and it is not a temp
Modified regs: [rax rcx rdx r8-r11 mm0-mm5]
Callee-saved registers pushed: 0 []
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT)
Pad V00 loc0, size=32, stkOffs=-0x20, pad=16
Assign V00 loc0, size=32, stkOffs=-0x40
Assign V01 loc1, size=40, stkOffs=-0x68
Assign V02 OutArgs, size=32, stkOffs=-0x88
--- delta bump 8 for RA
--- delta bump 8 for FP
--- delta bump 0 for RBP frame
--- virtual stack offset to actual stack offset delta is 16
-- V00 was -64, now -48
-- V01 was -104, now -88
-- V02 was -136, now -120
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
Mark labels for codegen
BB01 : first block
*************** After genMarkLabelsForCodegen()
-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds weight lp [IL range] [jump] [EH region] [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0000] 1 1 [000..051) (return) i label hascall gcsafe LIR -----------------------------------------------------------------------------------------------------------------------------------------
Setting stack level from -572662307 to 0
=============== Generating BB01 [000..051) (return), preds={} succs={} flags=0x00000002.20090020: i label hascall gcsafe LIR BB01 IN (0)={} + ByrefExposed + GcHeap
OUT(0)={} + ByrefExposed + GcHeap
Liveness not changing: 0000000000000000 {}
Live regs: (unchanged) 00000000 {}
GC regs: (unchanged) 00000000 {}
Byref regs: (unchanged) 00000000 {}
L_M11384_BB01:
Mapped BB01 to G_M11384_IG02
Label: IG02, GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
Scope info: begin block BB01, IL range [000..051)
Scope info: opening scope, LVnum=0 [000..051)
New debug range: first
Scope info: opening scope, LVnum=1 [000..051)
New debug range: first
Added IP mapping: 0x0000 STACK_EMPTY (G_M11384_IG02,ins#0,ofs#0) label
Generating: N002 (???,???) [000037] ------------ IL_OFFSET void IL offset: 0x0 REG NA
Generating: N004 ( 1, 1) [000002] -c---------- t2 = CNS_INT int 0 REG NA
/--* t2 int Generating: N006 ( 2, 2) [000029] ------------ t29 = * SIMD simd32 float init REG mm0
IN0001: vxorps ymm0, ymm0
/--* t29 simd32 Generating: N008 ( 6, 5) [000003] DA--G------- * STORE_LCL_VAR simd32<System.Numerics.Vector`1[Single]>(AX) V00 loc0 NA REG NA
IN0002: vmovupd ymmword ptr[V00 rbp-30H], ymm0
Added IP mapping: 0x0008 STACK_EMPTY (G_M11384_IG02,ins#2,ofs#11)
Generating: N010 (???,???) [000038] ------------ IL_OFFSET void IL offset: 0x8 REG NA
Generating: N012 ( 3, 3) [000005] ------------ t5 = LCL_VAR_ADDR byref V00 loc0 rcx REG rcx
IN0003: lea rcx, bword ptr [V00 rbp-30H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t5 byref Generating: N014 (???,???) [000044] ------------ t44 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t44 byref this in rcx
Generating: N016 ( 17, 10) [000006] --CXG------- t6 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0004: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t6 ref Generating: [000049] --CXG------- t49 = * COPY ref REG rcx
/--* t49 ref Generating: N018 (???,???) [000045] --CXG------- t45 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN0005: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t45 ref arg0 in rcx
Generating: N020 ( 31, 16) [000007] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: call System.Console:WriteLine(System.String)
Added IP mapping: 0x001A STACK_EMPTY (G_M11384_IG02,ins#6,ofs#28)
Generating: N022 (???,???) [000039] ------------ IL_OFFSET void IL offset: 0x1a REG NA
Generating: N024 ( 1, 1) [000010] ------------ t10 = CNS_INT int 0 REG rcx
IN0007: xor ecx, ecx
/--* t10 int Generating: N026 ( 5, 6) [000012] UA--G------- * STORE_LCL_FLD int V01 loc1 [+0] Fseq[a] NA REG NA
IN0008: mov dword ptr [V01 rbp-58H], ecx
Added IP mapping: 0x0022 STACK_EMPTY (G_M11384_IG02,ins#8,ofs#33)
Generating: N028 (???,???) [000040] ------------ IL_OFFSET void IL offset: 0x22 REG NA
Generating: N030 ( 1, 1) [000017] -c---------- t17 = CNS_INT int 0 REG NA
Generating: N032 ( 3, 2) [000013] U------N---- t13 = LCL_VAR_ADDR byref V01 loc1 rcx REG rcx
IN0009: lea rcx, bword ptr [V01 rbp-58H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t13 byref Generating: N034 ( 5, 5) [000033] -c---------- t33 = * LEA(b+8) byref REG NA
/--* t33 byref +--* t17 int Generating: N036 ( 8, 7) [000018] nA--G------- * STORE_BLK simd32<System.Numerics.Vector`1[Single]> (init) (Unroll) REG NA
Byref regs: 00000002 {rcx} => 00000000 {}
IN000a: vxorps xmm0, xmm0
IN000b: vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: vmovdqu xmmword ptr [rcx+24], xmm0
Added IP mapping: 0x002F STACK_EMPTY (G_M11384_IG02,ins#12,ofs#54)
Generating: N038 (???,???) [000041] ------------ IL_OFFSET void IL offset: 0x2f REG NA
Generating: N040 ( 3, 3) [000023] ------------ t23 = LCL_FLD_ADDR byref V01 loc1 [+8] Fseq[b] rcx REG rcx
IN000d: lea rcx, bword ptr [V01+0x8 rbp-50H]
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t23 byref Generating: N042 (???,???) [000046] ------------ t46 = * PUTARG_REG byref REG rcx
Byref regs: 00000002 {rcx} => 00000000 {}
Byref regs: 00000000 {} => 00000002 {rcx}
/--* t46 byref this in rcx
Generating: N044 ( 17, 10) [000024] --CXG------- t24 = * CALL ref System.Numerics.Vector`1[Single][System.Single].ToString REG rax
Byref regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN000e: call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
GC regs: 00000000 {} => 00000001 {rax}
/--* t24 ref Generating: [000050] --CXG------- t50 = * COPY ref REG rcx
/--* t50 ref Generating: N046 (???,???) [000047] --CXG------- t47 = * PUTARG_REG ref REG rcx
GC regs: 00000001 {rax} => 00000000 {}
IN000f: mov rcx, rax
GC regs: 00000000 {} => 00000002 {rcx}
GC regs: 00000002 {rcx} => 00000000 {}
GC regs: 00000000 {} => 00000002 {rcx}
/--* t47 ref arg0 in rcx
Generating: N048 ( 31, 16) [000025] --CXG------- * CALL void System.Console.WriteLine REG NA
GC regs: 00000002 {rcx} => 00000000 {}
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: call System.Console:WriteLine(System.String)
Added IP mapping: 0x0046 STACK_EMPTY (G_M11384_IG02,ins#16,ofs#71)
Generating: N050 (???,???) [000042] ------------ IL_OFFSET void IL offset: 0x46 REG NA
Generating: N052 ( 1, 1) [000026] ------------ t26 = CNS_INT int 8 vector element count REG rcx
IN0011: mov ecx, 8
/--* t26 int Generating: N054 (???,???) [000048] ------------ t48 = * PUTARG_REG int REG rcx
/--* t48 int arg0 in rcx
Generating: N056 ( 15, 7) [000027] --CXG------- * CALL void System.Console.WriteLine REG NA
Call: GCvars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: call System.Console:WriteLine(int)
Added IP mapping: 0x0050 STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81)
Generating: N058 (???,???) [000043] ------------ IL_OFFSET void IL offset: 0x50 REG NA
Generating: N060 ( 0, 0) [000028] ------------ RETURN void REG NA
Added IP mapping: EPILOG STACK_EMPTY (G_M11384_IG02,ins#18,ofs#81) label
Reserving epilog IG for block BB01
IN0013: nop G_M11384_IG02: ; offs=000000H, funclet=00, bbWeight=1 *************** After placeholder IG creation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
Variable Live Range History Dump for BB01
V00 loc0: rbp[-48] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
V01 loc1: rbp[-88] (1 slot) [(G_M11384_IG02,ins#0,ofs#0), (G_M11384_IG02,ins#18,ofs#81)]
Liveness not changing: 0000000000000000 {}
# compCycleEstimate = 98, compSizeEstimate = 59 Scratch.Program:TestSIMDInit()
; Final local variable assignments
;
; V00 loc0 [V00 ] ( 1, 1 ) simd32 -> [rbp-30H] do-not-enreg[XSB] must-init addr-exposed ld-addr-op
; V01 loc1 [V01 ] ( 1, 1 ) struct (40) [rbp-58H] do-not-enreg[XSFB] must-init addr-exposed ld-addr-op
; V02 OutArgs [V02 ] ( 1, 1 ) lclBlk (32) [rsp+00H] do-not-enreg[] "OutgoingArgSpace"
;
; Lcl frame size = 128
*************** Before prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG
G_M11384_IG02: ; offs=000000H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; epilog placeholder, next placeholder=<END>, BB01 [0000], epilog, extend <-- First placeholder <-- Last placeholder
; PrevGCVars=0000000000000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {}
; InitGCVars=0000000000000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {}
*************** In genFnProlog()
Added IP mapping to front: PROLOG STACK_EMPTY (G_M11384_IG01,ins#0,ofs#0) label
__prolog:
Found 18 lvMustInit int-sized stack slots, frame offsets 88 through 16
IN0014: push rbp
IN0015: sub rsp, 128
IN0016: vzeroupper IN0017: lea rbp, [rsp+80H]
IN0018: xor rax, rax
IN0019: mov qword ptr [rbp-58H], rax
IN001a: vxorps xmm4, xmm4
IN001b: vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: vmovdqa xmmword ptr [rbp-20H], xmm4
*************** In genEnregisterIncomingStackArgs()
G_M11384_IG01: ; offs=000000H, funclet=00, bbWeight=1 *************** In genFnEpilog()
__epilog:
gcVarPtrSetCur=0000000000000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {}
IN001f: vzeroupper IN0020: add rsp, 128
IN0021: pop rbp
IN0022: ret G_M11384_IG03: ; offs=000052H, funclet=00, bbWeight=1 0 prologs, 1 epilogs, 0 funclet prologs, 0 funclet epilogs
*************** After prolog / epilog generation
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
G_M11384_IG02: ; offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
G_M11384_IG03: ; offs=000088H, size=000CH, epilog, nogc, extend
*************** In emitJumpDistBind()
*************** Finishing PHASE Generate code
*************** Starting PHASE Emit code
Hot code size = 0x94 bytes
Cold code size = 0x0 bytes
reserveUnwindInfo(isFunclet=false, isColdCode=false, unwindSize=0x8)
*************** In emitEndCodeGen()
Converting emitMaxStackDepth from bytes (0) to elements (0)
***************************************************************************
Instructions as they come out of the scheduler
G_M11384_IG01: ; func=00, offs=000000H, size=0036H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN0014: 000000 55 push rbp
IN0015: 000001 4881EC80000000 sub rsp, 128
IN0016: 000008 C5F877 vzeroupper IN0017: 00000B 488DAC2480000000 lea rbp, [rsp+80H]
IN0018: 000013 33C0 xor eax, eax
IN0019: 000015 488945A8 mov qword ptr [rbp-58H], rax
IN001a: 000019 C5D857E4 vxorps xmm4, xmm4 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 0 by 1 => 1
IN001b: 00001D C5F97F65B0 vmovdqa xmmword ptr [rbp-50H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 1 by 1 => 2
IN001c: 000022 C5F97F65C0 vmovdqa xmmword ptr [rbp-40H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 2 by 1 => 3
IN001d: 000027 C5F97F65D0 vmovdqa xmmword ptr [rbp-30H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 3 by 1 => 4
IN001e: 00002C C5F97F65E0 vmovdqa xmmword ptr [rbp-20H], xmm4 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 4 by 1 => 5
;; bbWeight=1 PerfScore 8.33
G_M11384_IG02: ; func=00, offs=000036H, size=0052H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref
Block predicted offs = 00000036, actual = 00000031 -> size adj = 5
IN0001: 000031 C5FC57C0 vxorps ymm0, ymm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 5 by 1 => 6
IN0002: 000035 C5FD1145D0 vmovupd ymmword ptr[rbp-30H], ymm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 6 by 1 => 7
IN0003: 00003A 488D4DD0 lea rcx, bword ptr [rbp-30H]
; byrRegs +[rcx]
; Call at 003E [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN0004: 00003E E82DF7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN0005: 000043 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 0046 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0006: 000046 E8DDF8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0007: 00004B 33C9 xor ecx, ecx
IN0008: 00004D 894DA8 mov dword ptr [rbp-58H], ecx
IN0009: 000050 488D4DA8 lea rcx, bword ptr [rbp-58H]
; byrRegs +[rcx]
IN000a: 000054 C5F857C0 vxorps xmm0, xmm0 (ECS:5, ACS:4)
Instruction predicted size = 5, actual = 4
Increasing size adj 7 by 1 => 8
IN000b: 000058 C5FA7F4108 vmovdqu xmmword ptr [rcx+8], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 8 by 1 => 9
IN000c: 00005D C5FA7F4118 vmovdqu xmmword ptr [rcx+24], xmm0 (ECS:6, ACS:5)
Instruction predicted size = 6, actual = 5
Increasing size adj 9 by 1 => 10
IN000d: 000062 488D4DB0 lea rcx, bword ptr [rbp-50H]
; Call at 0066 [stk=0], GCvars=none, gcrefRegs=00000001 {rax}, byrefRegs=00000000 {}
IN000e: 000066 E805F7FFFF call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
; gcrRegs +[rax]
; byrRegs -[rcx]
IN000f: 00006B 488BC8 mov rcx, rax
; gcrRegs +[rcx]
; Call at 006E [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0010: 00006E E8B5F8FFFF call System.Console:WriteLine(System.String)
; gcrRegs -[rax rcx]
IN0011: 000073 B908000000 mov ecx, 8
; Call at 0078 [stk=0], GCvars=none, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
IN0012: 000078 E883F8FFFF call System.Console:WriteLine(int)
IN0013: 00007D 90 nop ;; bbWeight=1 PerfScore 13.42
G_M11384_IG03: ; func=00, offs=000088H, size=000CH, epilog, nogc, extend
Block predicted offs = 00000088, actual = 0000007E -> size adj = 10
IN001f: 00007E C5F877 vzeroupper IN0020: 000081 4881C480000000 add rsp, 128
IN0021: 000088 5D pop rbp
IN0022: 000089 C3 ret ;; bbWeight=1 PerfScore 2.75Allocated method code size = 148 , actual size = 138, unused size = 10
; Total bytes of code 138, prolog size 49, PerfScore 39.30, instruction count 34, allocated bytes for code 148 (MethodHash=1924d387) for method Scratch.Program:TestSIMDInit()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M11384_IG01: ; func=00, offs=000000H, size=0031H, bbWeight=1 PerfScore 8.33, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc, isz <-- Prolog IG
IN0014: 000000 push rbp
IN0015: 000001 sub rsp, 128
IN0016: 000008 vzeroupper IN0017: 00000B lea rbp, [rsp+80H]
IN0018: 000013 xor eax, eax
IN0019: 000015 mov qword ptr [rbp-58H], rax
IN001a: 000019 vxorps xmm4, xmm4
IN001b: 00001D vmovdqa xmmword ptr [rbp-50H], xmm4
IN001c: 000022 vmovdqa xmmword ptr [rbp-40H], xmm4
IN001d: 000027 vmovdqa xmmword ptr [rbp-30H], xmm4
IN001e: 00002C vmovdqa xmmword ptr [rbp-20H], xmm4
G_M11384_IG02: ; offs=000031H, size=004DH, bbWeight=1 PerfScore 13.42, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000031 vxorps ymm0, ymm0
IN0002: 000035 vmovupd ymmword ptr[V00 rbp-30H], ymm0
IN0003: 00003A lea rcx, bword ptr [V00 rbp-30H]
IN0004: 00003E call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN0005: 000043 mov rcx, rax
IN0006: 000046 call System.Console:WriteLine(System.String)
IN0007: 00004B xor ecx, ecx
IN0008: 00004D mov dword ptr [V01 rbp-58H], ecx
IN0009: 000050 lea rcx, bword ptr [V01 rbp-58H]
IN000a: 000054 vxorps xmm0, xmm0
IN000b: 000058 vmovdqu xmmword ptr [rcx+8], xmm0
IN000c: 00005D vmovdqu xmmword ptr [rcx+24], xmm0
IN000d: 000062 lea rcx, bword ptr [V01+0x8 rbp-50H]
IN000e: 000066 call System.Numerics.Vector`1[Single][System.Single]:ToString():System.String:this
IN000f: 00006B mov rcx, rax
IN0010: 00006E call System.Console:WriteLine(System.String)
IN0011: 000073 mov ecx, 8
IN0012: 000078 call System.Console:WriteLine(int)
IN0013: 00007D nop G_M11384_IG03: ; offs=00007EH, size=000CH, bbWeight=1 PerfScore 2.75, epilog, nogc, extend
IN001f: 00007E vzeroupper IN0020: 000081 add rsp, 128
IN0021: 000088 pop rbp
IN0022: 000089 ret *************** Finishing PHASE Emit code
*************** Starting PHASE Emit GC+EH tables
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0x00008a (not in unwind data)
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
allocUnwindInfo(pHotCode=0x00007FF91825C3E0, pColdCode=0x0000000000000000, startOffset=0x0, endOffset=0x8a, unwindSize=0x8, pUnwindBlock=0x0000023460FF5B08, funKind=0 (main function))
*************** In genIPmappingGen()
IP mapping count : 9
IL offs PROLOG : 0x00000000 ( STACK_EMPTY )
IL offs 0x0000 : 0x00000031 ( STACK_EMPTY )
IL offs 0x0008 : 0x0000003A ( STACK_EMPTY )
IL offs 0x001A : 0x0000004B ( STACK_EMPTY )
IL offs 0x0022 : 0x00000050 ( STACK_EMPTY )
IL offs 0x002F : 0x00000062 ( STACK_EMPTY )
IL offs 0x0046 : 0x00000073 ( STACK_EMPTY )
IL offs 0x0050 : 0x0000007D ( STACK_EMPTY )
IL offs EPILOG : 0x0000007D ( STACK_EMPTY )
*************** In genSetScopeInfo()
VarLocInfo count is 2
; Variable debug info: 2 live ranges, 2 vars for method Scratch.Program:TestSIMDInit()
0( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-48] (1 slot)
1( UNKNOWN) : From 00000031h to 0000007Dh, in rbp[-88] (1 slot)
VARIABLE LIVE RANGES:
V00 loc0: rbp[-48] (1 slot) [31, 7D)
V01 loc1: rbp[-88] (1 slot) [31, 7D)
*************** In gcInfoBlockHdrSave()
Set code length to 138.
Set ReturnKind to Scalar.
Set stack base register to rbp.
Set Outgoing stack arg area size to 32.
Defining 0 call sites:
*************** Finishing PHASE Emit GC+EH tables
Method code size: 138
Allocations for Scratch.Program:TestSIMDInit() (MethodHash=1924d387)
count: 508, size: 41915, max = 2816
allocateMemory: 65536, nraUsed: 44416
Alloc'd bytes by kind:
kind | size | pct
---------------------+------------+--------
AssertionProp | 0 | 0.00%
ASTNode | 6904 | 16.47%
InstDesc | 4224 | 10.08%
ImpStack | 384 | 0.92%
BasicBlock | 848 | 2.02%
fgArgInfo | 320 | 0.76%
fgArgInfoPtrArr | 40 | 0.10%
FlowList | 0 | 0.00%
TreeStatementList | 0 | 0.00%
SiScope | 0 | 0.00%
DominatorMemory | 0 | 0.00%
LSRA | 4216 | 10.06%
LSRA_Interval | 1120 | 2.67%
LSRA_RefPosition | 7104 | 16.95%
Reachability | 0 | 0.00%
SSA | 0 | 0.00%
ValueNumber | 0 | 0.00%
LvaTable | 2048 | 4.89%
UnwindInfo | 0 | 0.00%
hashBv | 40 | 0.10%
bitset | 56 | 0.13%
FixedBitVect | 16 | 0.04%
Generic | 1750 | 4.18%
LocalAddressVisitor | 0 | 0.00%
FieldSeqStore | 224 | 0.53%
ZeroOffsetFieldMap | 40 | 0.10%
ArrayInfoMap | 0 | 0.00%
MemoryPhiArg | 0 | 0.00%
CSE | 0 | 0.00%
GC | 1448 | 3.45%
CorTailCallInfo | 0 | 0.00%
Inlining | 120 | 0.29%
ArrayStack | 0 | 0.00%
DebugInfo | 368 | 0.88%
DebugOnly | 8875 | 21.17%
Codegen | 848 | 2.02%
LoopOpt | 24 | 0.06%
LoopClone | 0 | 0.00%
LoopHoist | 0 | 0.00%
Unknown | 330 | 0.79%
RangeCheck | 0 | 0.00%
CopyProp | 0 | 0.00%
SideEffects | 0 | 0.00%
ObjectAllocator | 0 | 0.00%
VariableLiveRanges | 472 | 1.13%
ClassLayout | 96 | 0.23%
TailMergeThrows | 0 | 0.00%
EarlyProp | 0 | 0.00%
ZeroInit | 0 | 0.00%
Pgo | 0 | 0.00%
****** DONE compiling Scratch.Program:TestSIMDInit()
<0, 0, 0, 0, 0, 0, 0, 0>
<0, 0, 0, 0, 0, 0, 0, 0>
8

@sandreenko

Copy link
Copy Markdown
Contributor

I see. It is because you are changing only genCodeForCpBlkUnroll
and not

voidCodeGen::genCodeForInitBlkUnroll(GenTreeBlk* node)

could I ask you to do the same change there if you have time? If not I am ok with merging this, it is still a nice improvement.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@sandreenko Sure, I'll take a look at genCodeForInitBlkUnroll and update the PR. If it isn't quick to do, I'll let you know and maybe we can just merge the PR as is, but I'll let you know where I end up.

@tannergooding

Copy link
Copy Markdown
Member

Yeah, the only difference on modern CPUs should be if the read/write crosses a cache-line or page boundary. Using XMM where possible can reduce the chance of that happening, but it might not matter overall in practice and the cost is significantly reduced on the latest generation AMD and Intel CPUs (at least according to the optimization manuals)

@BruceForstall

Copy link
Copy Markdown
Contributor

@BruceForstall Ok, I now see what is happening. I'll make the adjustment to lowering and update the PR to remove the uneeded xor eax, eax

It occurs to me that generating a zero into a register means the "const zero" node should not be marked contained, so codegen puts it into a register. So maybe it shouldn't be contained, but should be marked as a type that codegen would use to create an xmm or ymm zero. It's a bit tricky here because if we actually needed a zero in the GPR and xmm/ymm, we only have a single "const zero" node.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

@BruceForstall I've updated the PR with your suggested changes. Now the remainder is handled with an xmm register if it will fit, and the redundant xor <gpr>,<gpr> is no longer being generated.

Now for the test case:

[StructLayout(LayoutKind.Sequential,Size=33)]privatestructBlock33{}privatestaticBlock33a,b;staticvoidReplaceBlock33(){a=new();b=a;}

The following code is produced:

; Total bytes of code 82, prolog size 7, PerfScore 27.73, instruction count 18, allocated bytes for code 89 (MethodHash=d1aef7f7) for method AVX2BlockMoves.Program:ReplaceBlock33()
; ============================================================
*************** After end code gen, before unwindEmit()
G_M2056_IG01: ; func=00, offs=000000H, size=0007H, bbWeight=1 PerfScore 2.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
IN000e: 000000 push rbp
IN000f: 000001 vzeroupper IN0010: 000004 mov rbp, rsp
G_M2056_IG02: ; offs=000007H, size=0049H, bbWeight=1 PerfScore 15.08, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, BB01 [0000], byref, isz
IN0001: 000007 mov rax, 0x1A8489E2ED8
IN0002: 000011 mov rax, gword ptr [rax]
IN0003: 000014 vxorps ymm0, ymm0
IN0004: 000018 vmovdqu ymmword ptr[rax+8], ymm0
IN0005: 00001D vmovdqu xmmword ptr [rax+25], xmm0
IN0006: 000022 mov rax, 0x1A8489E2ED0
IN0007: 00002C mov rax, gword ptr [rax]
IN0008: 00002F mov rdx, 0x1A8489E2ED8
IN0009: 000039 mov rdx, gword ptr [rdx]
IN000a: 00003C vmovdqu ymm0, ymmword ptr[rdx+8]
IN000b: 000041 vmovdqu ymmword ptr[rax+8], ymm0
IN000c: 000046 vmovdqu xmm0, xmmword ptr [rdx+25]
IN000d: 00004B vmovdqu xmmword ptr [rax+25], xmm0
G_M2056_IG03: ; offs=000050H, size=0002H, bbWeight=1 PerfScore 1.50, epilog, nogc, extend
IN0011: 000050 pop rbp
IN0012: 000051 ret *************** Finishing PHASE Emit code
Updated ASM diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1138977
Total bytes of diff: 1128928
Total bytes of delta: -10049 (-0.88% of base)
Total relative delta: -14.79
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 22476.dasm (1.26% of base)
62 : 43734.dasm (0.72% of base)
62 : 41315.dasm (0.72% of base)
20 : 20305.dasm (0.27% of base)
18 : 12341.dasm (0.92% of base)
18 : 30891.dasm (2.68% of base)
18 : 43272.dasm (2.68% of base)
18 : 16203.dasm (0.63% of base)
18 : 18996.dasm (2.68% of base)
18 : 20753.dasm (2.68% of base)
17 : 1945.dasm (2.23% of base)
15 : 17198.dasm (0.57% of base)
14 : 39658.dasm (2.07% of base)
14 : 2434.dasm (1.20% of base)
14 : 23820.dasm (2.06% of base)
12 : 17637.dasm (0.84% of base)
12 : 17183.dasm (0.47% of base)
12 : 36960.dasm (0.64% of base)
12 : 40590.dasm (2.57% of base)
12 : 43391.dasm (2.57% of base)
Top file improvements (bytes):
-291 : 7486.dasm (-14.38% of base)
-291 : 10714.dasm (-14.38% of base)
-243 : 9156.dasm (-8.80% of base)
-239 : 32709.dasm (-17.90% of base)
-236 : 36362.dasm (-9.59% of base)
-236 : 28717.dasm (-9.94% of base)
-205 : 40945.dasm (-18.59% of base)
-150 : 40946.dasm (-13.37% of base)
-142 : 15105.dasm (-0.85% of base)
-134 : 32845.dasm (-2.61% of base)
-123 : 28884.dasm (-2.54% of base)
-98 : 24198.dasm (-2.54% of base)
-95 : 15999.dasm (-2.60% of base)
-95 : 40605.dasm (-2.52% of base)
-95 : 27461.dasm (-2.45% of base)
-91 : 42846.dasm (-2.47% of base)
-91 : 10419.dasm (-2.48% of base)
-90 : 15009.dasm (-3.36% of base)
-86 : 6563.dasm (-5.02% of base)
-86 : 695.dasm (-4.98% of base)
1026 total files with Code Size differences (597 improved, 429 regressed), 17 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 22476.dasm - RegexCharClass:.cctor()
62 ( 0.72% of base) : 43734.dasm - <NextResult>d__47:MoveNext():this
62 ( 0.72% of base) : 41315.dasm - <NextResult>d__47:MoveNext():this
20 ( 0.27% of base) : 20305.dasm - <NextResult>d__47:MoveNext():this
18 ( 0.92% of base) : 12341.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 0.63% of base) : 16203.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 2.68% of base) : 18996.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 20753.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
17 ( 2.23% of base) : 1945.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
15 ( 0.57% of base) : 17198.dasm - <VerifyClustersAsync>d__31:MoveNext():this
14 ( 2.07% of base) : 39658.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
14 ( 1.20% of base) : 2434.dasm - MemberInfoCache`1:PopulateFields(Filter):ref:this
14 ( 2.06% of base) : 23820.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
12 ( 0.84% of base) : 17637.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 0.47% of base) : 17183.dasm - <VerifyRoutesAsync>d__30:MoveNext():this
12 ( 0.64% of base) : 36960.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
12 ( 2.57% of base) : 40590.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
12 ( 2.57% of base) : 43391.dasm - ConcurrentDictionary`2:TryGetValue(SslCredKey,byref):bool:this
Top method improvements (bytes):
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-243 (-8.80% of base) : 9156.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.59% of base) : 36362.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-236 (-9.94% of base) : 28717.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-142 (-0.85% of base) : 15105.dasm - <SendAsyncCore>d__60:MoveNext():this
-134 (-2.61% of base) : 32845.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-123 (-2.54% of base) : 28884.dasm - RelationshipDiscoveryConvention:FindRelationshipCandidates(IConventionEntityTypeBuilder):IReadOnlyList`1:this
-98 (-2.54% of base) : 24198.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.60% of base) : 15999.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.52% of base) : 40605.dasm - <ProcessRequests>d__223`1:MoveNext():this
-95 (-2.45% of base) : 27461.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.47% of base) : 42846.dasm - <ProcessRequests>d__223`1:MoveNext():this
-91 (-2.48% of base) : 10419.dasm - <ProcessRequests>d__223`1:MoveNext():this
-90 (-3.36% of base) : 15009.dasm - <SendWithRetryAsync>d__87:MoveNext():this
-86 (-5.02% of base) : 6563.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
-86 (-4.98% of base) : 695.dasm - <ProcessRequestsAsync>d__68:MoveNext():this
Top method regressions (percentages):
2 ( 8.33% of base) : 32183.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 5.88% of base) : 1148.dasm - Unsafe:WriteUnaligned(byref,DbRow)
2 ( 5.26% of base) : 1151.dasm - Unsafe:ReadUnaligned(byref):DbRow
2 ( 5.13% of base) : 7893.dasm - Enumerator:get_Current():KeyValuePair`2:this
7 ( 4.83% of base) : 34898.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
2 ( 4.76% of base) : 37469.dasm - CacheEntry:set_AbsoluteExpiration(Nullable`1):this
2 ( 4.55% of base) : 1375.dasm - MemoryMarshal:Read(ReadOnlySpan`1):DbRow
2 ( 4.35% of base) : 27917.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
2 ( 4.35% of base) : 35276.dasm - <GetEnumerator>d__17:System.Collections.Generic.IEnumerator<TElement>.get_Current():KeyValuePair`2:this
4 ( 3.81% of base) : 31928.dasm - SslStreamPal:QueryContextStreamSizes(SafeDeleteContext,byref)
4 ( 3.67% of base) : 36971.dasm - StoreObjectIdentifier:op_Inequality(StoreObjectIdentifier,StoreObjectIdentifier):bool
2 ( 3.33% of base) : 34387.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
2 ( 3.28% of base) : 40786.dasm - CacheEntry:CheckForExpiredTime(byref):bool:this
2 ( 3.17% of base) : 41918.dasm - CacheEntry:CanPropagateOptions():bool:this
2 ( 3.17% of base) : 510.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
2 ( 3.17% of base) : 12163.dasm - ConfiguredValueTaskAwaitable`1:GetAwaiter():ConfiguredValueTaskAwaiter:this
1 ( 2.86% of base) : 37467.dasm - CacheEntryState:.ctor(int):this
4 ( 2.84% of base) : 26146.dasm - ComparisonComparer`1:Compare(ValueTuple`3,ValueTuple`3):int:this
18 ( 2.68% of base) : 30891.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
18 ( 2.68% of base) : 43272.dasm - MemberInfoCache`1:GetListByName(long,int,long,int,int,int):ref:this
Top method improvements (percentages):
-9 (-19.15% of base) : 31210.dasm - ModelMetadata:get_ModelType():Type:this
-205 (-18.59% of base) : 40945.dasm - Http1Connection:BeginRead(byref):bool:this
-239 (-17.90% of base) : 32709.dasm - RelationalTypeMappingParameters:WithTypeMappingInfo(byref):RelationalTypeMappingParameters:this
-36 (-16.82% of base) : 36341.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-36 (-16.82% of base) : 28698.dasm - RelationalTypeMappingInfo:GetHashCode():int:this
-291 (-14.38% of base) : 7486.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-291 (-14.38% of base) : 10714.dasm - ActivitySource:CreateActivity(String,int,ActivityContext,String,IEnumerable`1,IEnumerable`1,DateTimeOffset,bool,int):Activity:this
-49 (-13.84% of base) : 32699.dasm - ValueTuple`3:GetHashCode():int:this
-12 (-13.48% of base) : 3014.dasm - RandomAccess:GetNativeOverlappedForSyncHandle(SafeFileHandle,long):NativeOverlapped
-150 (-13.37% of base) : 40946.dasm - StreamPipeReader:ReadAsync(CancellationToken):ValueTask`1:this
-11 (-13.25% of base) : 1448.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-11 (-13.25% of base) : 658.dasm - ValueTask`1:GetAwaiter():ValueTaskAwaiter`1:this
-27 (-12.00% of base) : 19233.dasm - SqlMapper:QueryAsync(IDbConnection,Type,CommandDefinition):Task`1
-61 (-11.91% of base) : 33230.dasm - RelationalTypeMappingParameters:WithStoreTypeAndSize(String,Nullable`1,Nullable`1):RelationalTypeMappingParameters:this
-71 (-11.64% of base) : 41616.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-71 (-11.64% of base) : 43741.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
-27 (-11.30% of base) : 41989.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-27 (-11.30% of base) : 31605.dasm - ViewLocationCacheKey:Equals(Object):bool:this
-9 (-10.71% of base) : 33196.dasm - <>c__30`2:<GetOrAddRuntimeAnnotationValue>b__30_0(String,ValueTuple`3):Annotation:this
-63 (-10.52% of base) : 21534.dasm - ConcurrentDictionary`2:TryGetValueInternal(ModelMetadataIdentity,int,byref):bool:this
1026 total methods with Code Size differences (597 improved, 429 regressed), 17 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 655868
Total bytes of diff: 643049
Total bytes of delta: -12819 (-1.95% of base)
Total relative delta: -29.11
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 10916.dasm (1.26% of base)
34 : 856.dasm (4.82% of base)
32 : 9169.dasm (4.66% of base)
30 : 8544.dasm (1.34% of base)
22 : 5153.dasm (2.57% of base)
22 : 20549.dasm (0.93% of base)
18 : 8611.dasm (1.60% of base)
17 : 18619.dasm (2.05% of base)
16 : 21073.dasm (1.33% of base)
16 : 748.dasm (2.05% of base)
14 : 292.dasm (2.13% of base)
13 : 9071.dasm (0.62% of base)
12 : 18464.dasm (4.74% of base)
12 : 20591.dasm (0.74% of base)
12 : 578.dasm (1.56% of base)
12 : 3727.dasm (0.72% of base)
12 : 8606.dasm (1.01% of base)
12 : 8610.dasm (1.01% of base)
12 : 2948.dasm (0.25% of base)
12 : 19769.dasm (0.76% of base)
Top file improvements (bytes):
-534 : 16707.dasm (-11.54% of base)
-358 : 9351.dasm (-9.18% of base)
-320 : 12474.dasm (-32.36% of base)
-169 : 17266.dasm (-7.73% of base)
-144 : 16360.dasm (-6.88% of base)
-135 : 11972.dasm (-39.71% of base)
-135 : 25233.dasm (-39.71% of base)
-135 : 9772.dasm (-39.71% of base)
-134 : 17896.dasm (-13.36% of base)
-132 : 25479.dasm (-10.71% of base)
-132 : 25860.dasm (-10.45% of base)
-126 : 17948.dasm (-6.90% of base)
-120 : 17814.dasm (-5.23% of base)
-116 : 19353.dasm (-5.24% of base)
-115 : 11861.dasm (-13.82% of base)
-112 : 7692.dasm (-5.22% of base)
-112 : 5347.dasm (-11.50% of base)
-112 : 5134.dasm (-11.72% of base)
-109 : 17761.dasm (-14.10% of base)
-108 : 25738.dasm (-6.91% of base)
810 total files with Code Size differences (520 improved, 290 regressed), 15 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 10916.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8544.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
22 ( 2.57% of base) : 5153.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
22 ( 0.93% of base) : 20549.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
18 ( 1.60% of base) : 8611.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18619.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 1.33% of base) : 21073.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
16 ( 2.05% of base) : 748.dasm - System.Random:AssertInRange(long,long,long)
14 ( 2.13% of base) : 292.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9071.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
12 ( 0.74% of base) : 20591.dasm - <ApplyPlaintextFilterAsync>d__104:MoveNext():this
12 ( 1.56% of base) : 578.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.72% of base) : 3727.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,System.Type,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this
12 ( 1.01% of base) : 8606.dasm - Sigil.Emit`1[__Canon][System.__Canon]:StoreLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 1.01% of base) : 8610.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[__Canon]:this
12 ( 0.25% of base) : 2948.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.76% of base) : 19769.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
Top method improvements (bytes):
-534 (-11.54% of base) : 16707.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9351.dasm - System.Diagnostics.Perf_Activity:.cctor()
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-169 (-7.73% of base) : 17266.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-144 (-6.88% of base) : 16360.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 17896.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.71% of base) : 25479.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-132 (-10.45% of base) : 25860.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-126 (-6.90% of base) : 17948.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17814.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
-116 (-5.24% of base) : 19353.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.CSharp.Binder,bool,byref):this
-115 (-13.82% of base) : 11861.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-112 (-5.22% of base) : 7692.dasm - System.Collections.Immutable.ImmutableHashSet`1[Int32][System.Int32]:Union(System.Collections.Generic.IEnumerable`1[Int32],MutationInput[Int32]):MutationResult[Int32]
-112 (-11.50% of base) : 5347.dasm - System.Net.Security.SslStreamPal:AcceptSecurityContext(byref,byref,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-112 (-11.72% of base) : 5134.dasm - System.Net.Security.SslStreamPal:InitializeSecurityContext(byref,byref,System.String,System.ReadOnlySpan`1[Byte],byref,System.Net.Security.SslAuthenticationOptions):System.Net.SecurityStatusPal
-109 (-14.10% of base) : 17761.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitTypeReference(Microsoft.Cci.ITypeReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-108 (-6.91% of base) : 25738.dasm - HardwareIntrinsics.RayTracer.Surfaces:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 10482.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 14894.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 14893.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 13830.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 8.33% of base) : 14875.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_StartDate():System.Nullable`1[DateTimeOffset]:this
2 ( 8.33% of base) : 14872.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:get_EndDate():System.Nullable`1[DateTimeOffset]:this
34 ( 4.82% of base) : 856.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18464.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 18939.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9169.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
8 ( 4.52% of base) : 21367.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractBenchmark():System.Numerics.Matrix3x2:this
8 ( 4.52% of base) : 24063.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.26% of base) : 20861.dasm - System.Numerics.Tests.Perf_Matrix3x2:NegateBenchmark():System.Numerics.Matrix3x2:this
4 ( 4.04% of base) : 18655.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4230.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5384.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23696.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 9944.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
4 ( 3.48% of base) : 8057.dasm - System.Numerics.Tests.Perf_Matrix3x2:SubtractOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.48% of base) : 22632.dasm - System.Numerics.Tests.Perf_Matrix3x2:AddOperatorBenchmark():System.Numerics.Matrix3x2:this
Top method improvements (percentages):
-135 (-39.71% of base) : 11972.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 25233.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 9772.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26424.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11429.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5570.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 8064.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 10766.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12474.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 25236.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 15777.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24457.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 23699.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25956.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 920.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 921.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9332.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 13079.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 13075.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24866.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
810 total methods with Code Size differences (520 improved, 290 regressed), 15 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5352051
Total bytes of diff: 5273417
Total bytes of delta: -78634 (-1.47% of base)
Total relative delta: -180.84
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219904.dasm (0.95% of base)
123 : 225682.dasm (3.26% of base)
123 : 225690.dasm (3.30% of base)
64 : 171225.dasm (2.48% of base)
60 : 170597.dasm (2.38% of base)
40 : 171556.dasm (2.01% of base)
34 : 167239.dasm (0.60% of base)
33 : 171232.dasm (1.52% of base)
33 : 171239.dasm (1.52% of base)
31 : 167250.dasm (2.21% of base)
31 : 213250.dasm (4.41% of base)
30 : 170730.dasm (1.41% of base)
30 : 170863.dasm (1.41% of base)
23 : 171822.dasm (1.37% of base)
23 : 171689.dasm (1.37% of base)
19 : 171222.dasm (1.13% of base)
19 : 173815.dasm (4.50% of base)
19 : 173816.dasm (4.81% of base)
19 : 173817.dasm (4.56% of base)
19 : 171896.dasm (5.19% of base)
Top file improvements (bytes):
-1481 : 194830.dasm (-19.37% of base)
-1113 : 171251.dasm (-23.52% of base)
-1087 : 171091.dasm (-23.29% of base)
-1063 : 171250.dasm (-19.75% of base)
-1036 : 171072.dasm (-19.46% of base)
-480 : 81476.dasm (-30.34% of base)
-432 : 191529.dasm (-9.18% of base)
-432 : 192097.dasm (-9.18% of base)
-432 : 191842.dasm (-9.18% of base)
-386 : 251271.dasm (-40.21% of base)
-376 : 233037.dasm (-33.07% of base)
-376 : 226203.dasm (-33.07% of base)
-372 : 218861.dasm (-22.63% of base)
-370 : 218431.dasm (-34.45% of base)
-367 : 195815.dasm (-27.17% of base)
-366 : 227266.dasm (-33.30% of base)
-360 : 191838.dasm (-11.19% of base)
-360 : 191525.dasm (-11.19% of base)
-360 : 192093.dasm (-11.19% of base)
-352 : 226302.dasm (-29.31% of base)
3272 total files with Code Size differences (2596 improved, 676 regressed), 36 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219904.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225682.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225690.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
64 ( 2.48% of base) : 171225.dasm - NullableTest16:Run()
60 ( 2.38% of base) : 170597.dasm - NullableTest16:Run()
40 ( 2.01% of base) : 171556.dasm - NullableTest16:Run()
34 ( 0.60% of base) : 167239.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.52% of base) : 171232.dasm - NullableTest23:Run()
33 ( 1.52% of base) : 171239.dasm - NullableTest30:Run()
31 ( 2.21% of base) : 167250.dasm - Internal.IL.ILImporter:PropagateControlFlow(BasicBlock,bool):this
31 ( 4.41% of base) : 213250.dasm - StructABI:EchoNested9Wrapper():bool
30 ( 1.41% of base) : 170730.dasm - NullableTest23:Run()
30 ( 1.41% of base) : 170863.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171822.dasm - NullableTest30:Run()
23 ( 1.37% of base) : 171689.dasm - NullableTest23:Run()
19 ( 1.13% of base) : 171222.dasm - NullableTest13:Run()
19 ( 4.50% of base) : 173815.dasm - NullableTest34:BoxUnboxToNQGen(double):bool
19 ( 4.81% of base) : 173816.dasm - NullableTest34:BoxUnboxToNQGen(System.Numerics.Vector`1[Single]):bool
19 ( 4.56% of base) : 173817.dasm - NullableTest34:BoxUnboxToNQGen(long):bool
19 ( 5.19% of base) : 171896.dasm - NullableTest34:BoxUnboxToNQGenC(System.Nullable`1[Byte]):bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 194830.dasm - testout1:.cctor()
-1113 (-23.52% of base) : 171251.dasm - NullableTest44:Run()
-1087 (-23.29% of base) : 171091.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 171250.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 171072.dasm - NullableTest43:Run()
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-432 (-9.18% of base) : 191529.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 192097.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-432 (-9.18% of base) : 191842.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetHexadecaDataPoint(int):System.ValueTuple`8[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`1]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-372 (-22.63% of base) : 218861.dasm - AA:reset()
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-367 (-27.17% of base) : 195815.dasm - ILStubClass:IL_STUB_PInvoke(long,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,int,MCCTest.VType3,ushort,MCCTest.VType3,int,MCCTest.VType3,float,MCCTest.VType3,long,MCCTest.VType3,float,MCCTest.VType3,double,MCCTest.VType3,float,MCCTest.VType3,short,MCCTest.VType3):MCCTest.VType3
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-360 (-11.19% of base) : 191838.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 191525.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-360 (-11.19% of base) : 192093.dasm - IntelHardwareIntrinsicTest.TestTableSse2`2[Byte,Int64][System.Byte,System.Int64]:GetCheckMethodSixteen4DataPoint(int):System.ValueTuple`6[ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8,ValueTuple`8]:this
-352 (-29.31% of base) : 226302.dasm - AA:reset()
Top method regressions (percentages):
16 (12.70% of base) : 248861.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219438.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219440.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219436.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86372.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230828.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231719.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230893.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230970.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 171143.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214629.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102072.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102320.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214216.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229554.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229670.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101572.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101843.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 173161.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213702.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251271.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86408.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218431.dasm - AA:reset()
-366 (-33.30% of base) : 227266.dasm - AA:reset()
-376 (-33.07% of base) : 233037.dasm - AA:reset()
-376 (-33.07% of base) : 226203.dasm - AA:reset()
-134 (-31.75% of base) : 85546.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213553.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85547.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213700.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212578.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-480 (-30.34% of base) : 81476.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-35 (-29.91% of base) : 248780.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248779.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85544.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226302.dasm - AA:reset()
-95 (-29.23% of base) : 85545.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213701.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-11 (-27.50% of base) : 213715.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3272 total methods with Code Size differences (2596 improved, 676 regressed), 36 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3721792
Total bytes of diff: 3719245
Total bytes of delta: -2547 (-0.07% of base)
Total relative delta: -9.87
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 7231.dasm (0.93% of base)
61 : 214176.dasm (3.41% of base)
61 : 168666.dasm (3.38% of base)
58 : 214138.dasm (3.49% of base)
58 : 168611.dasm (3.49% of base)
58 : 171885.dasm (3.49% of base)
54 : 93415.dasm (0.62% of base)
54 : 171446.dasm (1.76% of base)
48 : 21546.dasm (1.35% of base)
34 : 171807.dasm (1.64% of base)
34 : 171145.dasm (2.05% of base)
34 : 204781.dasm (1.50% of base)
34 : 204747.dasm (1.63% of base)
33 : 204778.dasm (0.78% of base)
31 : 171843.dasm (0.91% of base)
31 : 171138.dasm (2.13% of base)
28 : 168319.dasm (1.85% of base)
28 : 171160.dasm (2.58% of base)
28 : 171298.dasm (2.31% of base)
24 : 214167.dasm (5.11% of base)
Top file improvements (bytes):
-722 : 116085.dasm (-1.48% of base)
-160 : 69489.dasm (-7.15% of base)
-156 : 193054.dasm (-5.86% of base)
-104 : 93699.dasm (-1.92% of base)
-62 : 61297.dasm (-0.51% of base)
-56 : 75446.dasm (-2.61% of base)
-50 : 204944.dasm (-4.09% of base)
-50 : 204978.dasm (-4.79% of base)
-50 : 204979.dasm (-4.94% of base)
-48 : 123952.dasm (-0.29% of base)
-47 : 204980.dasm (-3.68% of base)
-46 : 160307.dasm (-10.09% of base)
-44 : 148027.dasm (-1.13% of base)
-40 : 172588.dasm (-9.11% of base)
-37 : 179158.dasm (-2.11% of base)
-37 : 143137.dasm (-1.67% of base)
-36 : 143130.dasm (-2.75% of base)
-36 : 143136.dasm (-1.67% of base)
-30 : 168589.dasm (-8.96% of base)
-30 : 214129.dasm (-8.96% of base)
2678 total files with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 7231.dasm - BigNumber:.cctor()
61 ( 3.41% of base) : 214176.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.38% of base) : 168666.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 214138.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 168611.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171885.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.62% of base) : 93415.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.76% of base) : 171446.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.35% of base) : 21546.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.64% of base) : 171807.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.05% of base) : 171145.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.50% of base) : 204781.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.63% of base) : 204747.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.78% of base) : 204778.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 0.91% of base) : 171843.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.13% of base) : 171138.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 1.85% of base) : 168319.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.58% of base) : 171160.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TimeStampReq:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
28 ( 2.31% of base) : 171298.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 214167.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 116085.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 69489.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-156 (-5.86% of base) : 193054.dasm - System.Reflection.TypeLoading.Utf8Constants:.cctor()
-104 (-1.92% of base) : 93699.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-62 (-0.51% of base) : 61297.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 75446.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.09% of base) : 204944.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.79% of base) : 204978.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.94% of base) : 204979.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 123952.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.68% of base) : 204980.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-44 (-1.13% of base) : 148027.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.11% of base) : 179158.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 143137.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 143130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 143136.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-8.96% of base) : 168589.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 214129.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 182697.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 91915.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 122095.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 62799.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
2 (11.76% of base) : 121508.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 8.33% of base) : 122573.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
2 ( 8.33% of base) : 120199.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
1 ( 8.33% of base) : 194982.dasm - CacheEntryState:.ctor(int):this
11 ( 6.63% of base) : 23677.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 23565.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 182696.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 60901.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 62798.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 120819.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 23579.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 23582.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 23586.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
1 ( 5.26% of base) : 147901.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
2 ( 5.26% of base) : 118720.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
4 ( 5.13% of base) : 147891.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 117984.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-14 (-14.89% of base) : 14048.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 8011.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 126130.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 7995.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 8012.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 7839.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 8032.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 205511.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 205508.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-6 (-12.00% of base) : 59487.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-14 (-11.97% of base) : 8016.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 8033.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 205507.dasm - PemFieldItem:Deconstruct(byref,byref):this
-15 (-11.54% of base) : 205510.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-14 (-11.29% of base) : 194051.dasm - System.IO.Packaging.ContentType:.cctor()
-8 (-10.81% of base) : 61169.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-46 (-10.09% of base) : 160307.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-2 (-9.52% of base) : 60844.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 172588.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2678 total methods with Code Size differences (1621 improved, 1057 regressed), 4622 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4793285
Total bytes of diff: 4730932
Total bytes of delta: -62353 (-1.30% of base)
Total relative delta: -81.69
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84712.dasm (0.87% of base)
428 : 142391.dasm (4.03% of base)
294 : 223788.dasm (1.26% of base)
156 : 191569.dasm (2.93% of base)
114 : 117585.dasm (3.09% of base)
78 : 49933.dasm (0.45% of base)
64 : 78897.dasm (2.27% of base)
58 : 219282.dasm (3.45% of base)
58 : 218205.dasm (3.45% of base)
58 : 217184.dasm (3.45% of base)
52 : 217111.dasm (2.99% of base)
52 : 218167.dasm (2.99% of base)
50 : 117669.dasm (1.40% of base)
49 : 152888.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
47 : 219721.dasm (1.37% of base)
46 : 66952.dasm (2.98% of base)
41 : 66865.dasm (3.29% of base)
41 : 49634.dasm (2.06% of base)
40 : 142387.dasm (1.18% of base)
Top file improvements (bytes):
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-756 : 42777.dasm (-9.84% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-504 : 42689.dasm (-8.08% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 53672.dasm (-5.47% of base)
-425 : 53506.dasm (-8.14% of base)
-424 : 42914.dasm (-17.01% of base)
-422 : 78281.dasm (-8.96% of base)
-370 : 141627.dasm (-13.61% of base)
-370 : 141630.dasm (-13.21% of base)
-321 : 171310.dasm (-8.60% of base)
8139 total files with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84712.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 142391.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 223788.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 2.93% of base) : 191569.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.09% of base) : 117585.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.45% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 219282.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218205.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 217184.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 217111.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 218167.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
50 ( 1.40% of base) : 117669.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
49 ( 5.94% of base) : 152888.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
47 ( 1.37% of base) : 219721.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[Char],System.Security.Cryptography.HashAlgorithmName,int):this
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
40 ( 1.18% of base) : 142387.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
Top method improvements (bytes):
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-756 (-9.84% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-504 (-8.08% of base) : 42689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:OrderGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[FieldInfo])
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-5.47% of base) : 53672.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this
-425 (-8.14% of base) : 53506.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckInterfaceUnificationAndVariance(Microsoft.CodeAnalysis.DiagnosticBag):this
-424 (-17.01% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-422 (-8.96% of base) : 78281.dasm - Microsoft.CodeAnalysis.RuleSet:GetEffectiveRuleSet(System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):Microsoft.CodeAnalysis.RuleSet:this
-370 (-13.61% of base) : 141627.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTime(System.String):System.DateTime:this
-370 (-13.21% of base) : 141630.dasm - System.Xml.Schema.XmlDateTimeConverter:ToDateTimeOffset(System.String):System.DateTimeOffset:this
-321 (-8.60% of base) : 171310.dasm - System.Collections.Immutable.ImmutableHashSet`1[Byte][System.Byte]:SymmetricExcept(System.Collections.Generic.IEnumerable`1[Byte],MutationInput[Byte]):MutationResult[Byte]
Top method regressions (percentages):
2 (14.29% of base) : 1184.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 170727.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 196013.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81133.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 167134.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 170726.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 115466.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 676.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 670.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 115500.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
4 (10.00% of base) : 115493.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 115497.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 9.52% of base) : 162566.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 162598.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 190103.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
8 ( 9.41% of base) : 115494.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
8 ( 9.41% of base) : 115496.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84785.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 116019.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 186551.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 186532.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 116020.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116018.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116021.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116022.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 116023.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 116012.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 186533.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 150321.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 220187.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 150322.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8139 total methods with Code Size differences (3035 improved, 5104 regressed), 170 unchanged.

Please let me know if there are any other changes I can make. Thanks!

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Not sure why x86 is failing, currently investigating.

@alexcovington

Copy link
Copy Markdown
ContributorAuthor

Resolved x86 failures. Here is the updated ASM diff:

ASM Diffs

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 881705
Total bytes of diff: 865248
Total bytes of delta: -16457 (-1.87% of base)
Total relative delta: -31.07
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
294 : 8386.dasm (1.26% of base)
34 : 858.dasm (4.82% of base)
32 : 9322.dasm (4.66% of base)
30 : 8707.dasm (1.34% of base)
24 : 20479.dasm (2.15% of base)
22 : 20694.dasm (0.96% of base)
22 : 5278.dasm (2.57% of base)
18 : 9749.dasm (1.52% of base)
18 : 8773.dasm (1.60% of base)
17 : 18738.dasm (2.05% of base)
16 : 749.dasm (2.05% of base)
16 : 20692.dasm (1.33% of base)
16 : 10905.dasm (0.49% of base)
16 : 21223.dasm (1.33% of base)
14 : 291.dasm (2.13% of base)
13 : 9223.dasm (0.62% of base)
12 : 3091.dasm (0.25% of base)
12 : 19932.dasm (0.77% of base)
12 : 585.dasm (1.56% of base)
12 : 8783.dasm (0.85% of base)
Top file improvements (bytes):
-1328 : 16603.dasm (-8.81% of base)
-510 : 16826.dasm (-12.08% of base)
-358 : 9501.dasm (-9.18% of base)
-324 : 17194.dasm (-8.24% of base)
-320 : 12685.dasm (-32.36% of base)
-311 : 9521.dasm (-14.15% of base)
-276 : 12069.dasm (-17.83% of base)
-171 : 13653.dasm (-15.46% of base)
-169 : 17385.dasm (-7.66% of base)
-166 : 18344.dasm (-8.11% of base)
-144 : 16478.dasm (-6.88% of base)
-135 : 11678.dasm (-39.71% of base)
-135 : 26564.dasm (-39.71% of base)
-135 : 24968.dasm (-39.71% of base)
-134 : 18015.dasm (-13.36% of base)
-132 : 26060.dasm (-10.45% of base)
-132 : 25593.dasm (-10.71% of base)
-130 : 20748.dasm (-0.83% of base)
-126 : 18067.dasm (-6.90% of base)
-120 : 17933.dasm (-5.23% of base)
900 total files with Code Size differences (581 improved, 319 regressed), 13 unchanged.
Top method regressions (bytes):
294 ( 1.26% of base) : 8386.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
30 ( 1.34% of base) : 8707.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadConstant(int):Sigil.Emit`1[__Canon]:this
24 ( 2.15% of base) : 20479.dasm - StateMachineBox`1[VoidTaskResult,<WriteAsyncSlowPath>d__50][System.Threading.Tasks.VoidTaskResult,System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__50]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
22 ( 0.96% of base) : 20694.dasm - <DetermineVersionAndSendAsync>d__85:MoveNext():this
22 ( 2.57% of base) : 5278.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
18 ( 1.52% of base) : 9749.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this
18 ( 1.60% of base) : 8773.dasm - Sigil.Emit`1[__Canon][System.__Canon]:LoadArgument(ushort):Sigil.Emit`1[__Canon]:this
17 ( 2.05% of base) : 18738.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeModuleTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[Int32],System.Reflection.Metadata.Ecma335.MetadataSizes):this
16 ( 2.05% of base) : 749.dasm - System.Random:AssertInRange(long,long,long)
16 ( 1.33% of base) : 20692.dasm - <SendAndProcessAltSvcAsync>d__86:MoveNext():this
16 ( 0.49% of base) : 10905.dasm - <AsyncModeCopyToAsync>d__23:MoveNext():this
16 ( 1.33% of base) : 21223.dasm - DynamicClass:WriteMyEventsListerItemTaskToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.ClassDataContract)
14 ( 2.13% of base) : 291.dasm - MemberInfoCache`1[__Canon][System.__Canon]:GetListByName(long,int,long,int,int,int):System.__Canon[]:this
13 ( 0.62% of base) : 9223.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:SetEntry(Microsoft.Extensions.Caching.Memory.CacheEntry):this
12 ( 0.25% of base) : 3091.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
12 ( 0.77% of base) : 19932.dasm - <Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this
12 ( 1.56% of base) : 585.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateFields(Filter):System.Reflection.RuntimeFieldInfo[]:this
12 ( 0.85% of base) : 8783.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Return():Sigil.Emit`1[__Canon]:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 16603.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-510 (-12.08% of base) : 16826.dasm - Microsoft.CodeAnalysis.CSharp.Imports:Validate():this
-358 (-9.18% of base) : 9501.dasm - System.Diagnostics.Perf_Activity:.cctor()
-324 (-8.24% of base) : 17194.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:CheckInterfaces(Microsoft.CodeAnalysis.DiagnosticBag):this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-311 (-14.15% of base) : 9521.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[ActivityLink],System.DateTimeOffset,bool,int):System.Diagnostics.Activity:this
-276 (-17.83% of base) : 12069.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:Dequeue_And_Enqueue():this
-171 (-15.46% of base) : 13653.dasm - System.Collections.Tests.Perf_PriorityQueue`2[Guid,Guid][System.Guid,System.Guid]:K_Max_Elements():this
-169 (-7.66% of base) : 17385.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckAbstractClassImplementations(Microsoft.CodeAnalysis.DiagnosticBag):this
-166 (-8.11% of base) : 18344.dasm - Microsoft.Cci.MetadataWriter:SerializeTypeReference(System.Reflection.Metadata.Ecma335.SignatureTypeEncoder,Microsoft.Cci.ITypeReference):this
-144 (-6.88% of base) : 16478.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:AddNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode,System.Collections.Immutable.ImmutableHashSet`1+Builder[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref)
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-134 (-13.36% of base) : 18015.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitMethodReference(Microsoft.Cci.IMethodReference,Microsoft.CodeAnalysis.Emit.EmitContext)
-132 (-10.45% of base) : 26060.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableHashSet():int:this
-132 (-10.71% of base) : 25593.dasm - System.Collections.IterateForEach`1[Int32][System.Int32]:ImmutableDictionary():int:this
-130 (-0.83% of base) : 20748.dasm - <SendAsyncCore>d__60:MoveNext():this
-126 (-6.90% of base) : 18067.dasm - Microsoft.CodeAnalysis.CSharp.SourceDocumentationCommentUtils:GetDocumentationCommentTriviaFromSyntaxNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Syntax.DocumentationCommentTriviaSyntax, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
-120 (-5.23% of base) : 17933.dasm - Microsoft.CodeAnalysis.CSharp.ImportChain:TranslateImports(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[UsedNamespaceOrType]:this
Top method regressions (percentages):
2 (11.76% of base) : 10712.dasm - Benchmarks.SIMD.RayTracer.Plane:Normal(Benchmarks.SIMD.RayTracer.Vector):Benchmarks.SIMD.RayTracer.Vector:this
2 ( 9.52% of base) : 13968.dasm - Microsoft.Extensions.Caching.Memory.CacheEntry:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15040.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_EndDate(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 15041.dasm - MicroBenchmarks.Serializers.MyEventsListerItemTask:set_StartDate(System.Nullable`1[DateTimeOffset]):this
34 ( 4.82% of base) : 858.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[__Canon][System.__Canon]:.ctor(int):this
12 ( 4.74% of base) : 18583.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:AddMethodDefinition(int,int,System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.BlobHandle,int,System.Reflection.Metadata.ParameterHandle):System.Reflection.Metadata.MethodDefinitionHandle:this
8 ( 4.71% of base) : 15321.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixBenchmark():System.Numerics.Matrix3x2:this
32 ( 4.66% of base) : 9322.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Int32][System.Int32]:.ctor(int):this
4 ( 4.60% of base) : 18774.dasm - <>c__DisplayClass14_0:<GetTimeBasedProvider>b__0(System.Collections.Generic.IEnumerable`1[Blob]):System.Reflection.Metadata.BlobContentId:this
2 ( 4.00% of base) : 4360.dasm - <>c[__Canon,__Canon][System.__Canon,System.__Canon]:<.cctor>b__107_0(System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]):this
4 ( 3.81% of base) : 5507.dasm - System.Net.Security.SslStreamPal:QueryContextStreamSizes(System.Net.Security.SafeDeleteContext,byref)
4 ( 3.70% of base) : 23478.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix3x2:this
4 ( 3.51% of base) : 10134.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[HashBucket][System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:get_Value():System.Collections.Generic.KeyValuePair`2[Int32,HashBucket]:this
6 ( 3.35% of base) : 19108.dasm - System.Numerics.Tests.Perf_Matrix3x2:MultiplyByScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 3.28% of base) : 23405.dasm - System.Drawing.Tests.Perf_Color:FromArgb_AlphaColor():System.Drawing.Color:this
2 ( 3.17% of base) : 8337.dasm - System.Threading.Tasks.ValueTask`1[__Canon][System.__Canon]:GetAwaiter():System.Runtime.CompilerServices.ValueTaskAwaiter`1[__Canon]:this
2 ( 2.99% of base) : 23112.dasm - System.Memory.ReadOnlySequence:Slice_Start():System.Buffers.ReadOnlySequence`1[Byte]:this
5 ( 2.92% of base) : 20903.dasm - System.Reflection.Internal.EnumerableExtensions:FirstOrDefault(System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry],System.Func`2[DebugDirectoryEntry,Boolean]):System.Reflection.PortableExecutable.DebugDirectoryEntry
2 ( 2.90% of base) : 26161.dasm - System.Numerics.Tests.Perf_Matrix3x2:CreateScaleFromScalarBenchmark():System.Numerics.Matrix3x2:this
2 ( 2.86% of base) : 5688.dasm - System.Numerics.Matrix3x2:get_Identity():System.Numerics.Matrix3x2
Top method improvements (percentages):
-135 (-39.71% of base) : 11678.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 26564.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixBenchmark():System.Numerics.Matrix4x4:this
-135 (-39.71% of base) : 24968.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddBenchmark():System.Numerics.Matrix4x4:this
-81 (-35.06% of base) : 26168.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this
-60 (-34.88% of base) : 11005.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegateBenchmark():System.Numerics.Matrix4x4:this
-63 (-33.87% of base) : 5700.dasm - System.Numerics.Tests.Perf_Matrix4x4:InequalityOperatorBenchmark():bool:this
-63 (-33.87% of base) : 23780.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualityOperatorBenchmark():bool:this
-60 (-33.33% of base) : 9936.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByScalarBenchmark():System.Numerics.Matrix4x4:this
-320 (-32.36% of base) : 12685.dasm - System.Memory.MemoryMarshal`1[Byte][System.Byte]:Read():this
-99 (-32.25% of base) : 24971.dasm - System.Numerics.Tests.Perf_Matrix4x4:EqualsBenchmark():bool:this
-63 (-32.14% of base) : 23480.dasm - System.Numerics.Tests.Perf_Matrix4x4:AddOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 8256.dasm - System.Numerics.Tests.Perf_Matrix4x4:MultiplyByMatrixOperatorBenchmark():System.Numerics.Matrix4x4:this
-63 (-32.14% of base) : 24188.dasm - System.Numerics.Tests.Perf_Matrix4x4:SubtractOperatorBenchmark():System.Numerics.Matrix4x4:this
-60 (-27.40% of base) : 25716.dasm - System.Numerics.Tests.Perf_Matrix4x4:InvertBenchmark():bool:this
-7 (-26.92% of base) : 922.dasm - Enumerator[Measurement][BenchmarkDotNet.Reports.Measurement]:get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 923.dasm - <GetMeasurements>d__14:System.Collections.Generic.IEnumerator<BenchmarkDotNet.Reports.Measurement>.get_Current():BenchmarkDotNet.Reports.Measurement:this
-7 (-26.92% of base) : 9483.dasm - <ZipIterator>d__279`2[Guid,Guid][System.Guid,System.Guid]:System.Collections.Generic.IEnumerator<(TFirstFirst,TSecondSecond)>.get_Current():System.ValueTuple`2[Guid,Guid]:this
-27 (-26.21% of base) : 12737.dasm - System.Numerics.Tests.Perf_Quaternion:CreateFromRotationMatrixBenchmark():System.Numerics.Quaternion:this
-27 (-26.21% of base) : 12733.dasm - System.Numerics.Tests.Perf_Matrix4x4:Transpose():System.Numerics.Matrix4x4:this
-27 (-26.21% of base) : 24618.dasm - System.Numerics.Tests.Perf_Matrix4x4:NegationOperatorBenchmark():System.Numerics.Matrix4x4:this
900 total methods with Code Size differences (581 improved, 319 regressed), 13 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5940988
Total bytes of diff: 5841607
Total bytes of delta: -99381 (-1.67% of base)
Total relative delta: -190.03
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
173 : 219941.dasm (0.95% of base)
123 : 225713.dasm (3.26% of base)
123 : 225721.dasm (3.30% of base)
78 : 218945.dasm (0.70% of base)
78 : 218973.dasm (0.69% of base)
78 : 218744.dasm (0.75% of base)
78 : 218843.dasm (0.73% of base)
64 : 171552.dasm (2.56% of base)
60 : 172180.dasm (2.46% of base)
57 : 227811.dasm (0.84% of base)
51 : 227405.dasm (0.57% of base)
51 : 227424.dasm (0.55% of base)
49 : 167230.dasm (0.34% of base)
40 : 170635.dasm (2.01% of base)
34 : 167277.dasm (0.59% of base)
33 : 171818.dasm (1.43% of base)
33 : 171685.dasm (1.43% of base)
33 : 172187.dasm (1.46% of base)
33 : 172194.dasm (1.46% of base)
31 : 213445.dasm (4.41% of base)
Top file improvements (bytes):
-1481 : 195024.dasm (-19.37% of base)
-1370 : 218485.dasm (-10.47% of base)
-1370 : 218584.dasm (-10.53% of base)
-1331 : 218903.dasm (-9.90% of base)
-1331 : 218931.dasm (-9.95% of base)
-1173 : 227311.dasm (-13.62% of base)
-1113 : 172046.dasm (-20.14% of base)
-1087 : 172206.dasm (-19.91% of base)
-1063 : 172027.dasm (-19.75% of base)
-1036 : 172205.dasm (-19.46% of base)
-904 : 232968.dasm (-9.03% of base)
-882 : 226253.dasm (-8.50% of base)
-882 : 226320.dasm (-8.76% of base)
-834 : 226352.dasm (-8.26% of base)
-834 : 226419.dasm (-8.11% of base)
-723 : 218615.dasm (-5.96% of base)
-723 : 218714.dasm (-5.87% of base)
-696 : 218231.dasm (-5.73% of base)
-696 : 218330.dasm (-5.64% of base)
-687 : 218861.dasm (-5.89% of base)
3695 total files with Code Size differences (3006 improved, 689 regressed), 37 unchanged.
Top method regressions (bytes):
173 ( 0.95% of base) : 219941.dasm - DefaultNamespace.cb6054ToByte_all:runTest():bool:this
123 ( 3.26% of base) : 225713.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
123 ( 3.30% of base) : 225721.dasm - IntelHardwareIntrinsicTest.Program:.cctor()
78 ( 0.70% of base) : 218945.dasm - TestApp:Main():int
78 ( 0.69% of base) : 218973.dasm - TestApp:Main():int
78 ( 0.75% of base) : 218744.dasm - TestApp:Main():int
78 ( 0.73% of base) : 218843.dasm - TestApp:Main():int
64 ( 2.56% of base) : 171552.dasm - NullableTest16:Run()
60 ( 2.46% of base) : 172180.dasm - NullableTest16:Run()
57 ( 0.84% of base) : 227811.dasm - TestApp:Main():int
51 ( 0.57% of base) : 227405.dasm - TestApp:Main():int
51 ( 0.55% of base) : 227424.dasm - TestApp:Main():int
49 ( 0.34% of base) : 167230.dasm - Internal.IL.ILImporter:ImportBasicBlock(BasicBlock):this
40 ( 2.01% of base) : 170635.dasm - NullableTest16:Run()
34 ( 0.59% of base) : 167277.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
33 ( 1.43% of base) : 171818.dasm - NullableTest30:Run()
33 ( 1.43% of base) : 171685.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172187.dasm - NullableTest23:Run()
33 ( 1.46% of base) : 172194.dasm - NullableTest30:Run()
31 ( 4.41% of base) : 213445.dasm - StructABI:EchoNested9Wrapper():bool
Top method improvements (bytes):
-1481 (-19.37% of base) : 195024.dasm - testout1:.cctor()
-1370 (-10.47% of base) : 218485.dasm - TestApp:Main():int
-1370 (-10.53% of base) : 218584.dasm - TestApp:Main():int
-1331 (-9.90% of base) : 218903.dasm - TestApp:Main():int
-1331 (-9.95% of base) : 218931.dasm - TestApp:Main():int
-1173 (-13.62% of base) : 227311.dasm - TestApp:Main():int
-1113 (-20.14% of base) : 172046.dasm - NullableTest44:Run()
-1087 (-19.91% of base) : 172206.dasm - NullableTest44:Run()
-1063 (-19.75% of base) : 172027.dasm - NullableTest43:Run()
-1036 (-19.46% of base) : 172205.dasm - NullableTest43:Run()
-904 (-9.03% of base) : 232968.dasm - TestApp:Main():int
-882 (-8.50% of base) : 226253.dasm - TestApp:Main():int
-882 (-8.76% of base) : 226320.dasm - TestApp:Main():int
-834 (-8.26% of base) : 226352.dasm - TestApp:Main():int
-834 (-8.11% of base) : 226419.dasm - TestApp:Main():int
-723 (-5.96% of base) : 218615.dasm - TestApp:Main():int
-723 (-5.87% of base) : 218714.dasm - TestApp:Main():int
-696 (-5.73% of base) : 218231.dasm - TestApp:Main():int
-696 (-5.64% of base) : 218330.dasm - TestApp:Main():int
-687 (-5.89% of base) : 218861.dasm - TestApp:Main():int
Top method regressions (percentages):
16 (12.70% of base) : 248998.dasm - GitHub_23739:Test3f(Cls3f)
2 (11.76% of base) : 219475.dasm - Plane:Normal(Vector):Vector:this
3 (11.11% of base) : 219477.dasm - Ray:.ctor(Vector,Vector):this
3 (10.71% of base) : 219473.dasm - Light:.ctor(Vector,Color):this
4 ( 9.52% of base) : 86410.dasm - Test:Convert(long):StructY
12 ( 8.82% of base) : 230833.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230878.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 230975.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.82% of base) : 231724.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229726.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102358.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 172335.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 174313.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 229559.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 214904.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230675.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230710.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 230734.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 101610.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
12 ( 8.63% of base) : 102110.dasm - Helper:Compare(System.Nullable`1[ExplicitFieldOffsetStruct],ExplicitFieldOffsetStruct):bool
Top method improvements (percentages):
-26 (-44.83% of base) : 213897.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-386 (-40.21% of base) : 251410.dasm - Struct_512bytes:.ctor(long):this
-11 (-39.29% of base) : 86446.dasm - Program:Test(byref)
-370 (-34.45% of base) : 218468.dasm - AA:reset()
-366 (-33.30% of base) : 227297.dasm - AA:reset()
-376 (-33.07% of base) : 226234.dasm - AA:reset()
-376 (-33.07% of base) : 232991.dasm - AA:reset()
-134 (-31.75% of base) : 85585.dasm - JitTest.Test:Main():int
-23 (-31.51% of base) : 213748.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_04():HVA128_04[Byte]:this
-134 (-31.46% of base) : 85584.dasm - JitTest.Test:Main():int
-10 (-31.25% of base) : 213895.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_02():HVA128_02[Byte]:this
-20 (-30.77% of base) : 212877.dasm - <>c__DisplayClass3_0:<ValidateAssemblyIsolation>b__0():this
-35 (-29.91% of base) : 248917.dasm - UninitializedHighWord.App:PrepareMethods()
-98 (-29.70% of base) : 248916.dasm - UninitializedHighWord.App:StompStackBelowCallerSP()
-95 (-29.50% of base) : 85583.dasm - JitTest.Test:Main():int
-352 (-29.31% of base) : 226333.dasm - AA:reset()
-95 (-29.23% of base) : 85582.dasm - JitTest.Test:Main():int
-13 (-28.89% of base) : 213896.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA128_03():HVA128_03[Byte]:this
-540 (-28.51% of base) : 81486.dasm - Matrix4x4Test:Matrix4x4CreateScaleCenterTest3():int
-11 (-27.50% of base) : 213910.dasm - HVATests`1[Byte][System.Byte]:returnTest_HVA64_05():HVA64_05[Byte]:this
3695 total methods with Code Size differences (3006 improved, 689 regressed), 37 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3730178
Total bytes of diff: 3727702
Total bytes of delta: -2476 (-0.07% of base)
Total relative delta: -9.88
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
82 : 35057.dasm (0.93% of base)
61 : 208421.dasm (3.38% of base)
61 : 196166.dasm (3.41% of base)
58 : 196128.dasm (3.49% of base)
58 : 171543.dasm (3.49% of base)
58 : 208366.dasm (3.49% of base)
54 : 129622.dasm (0.63% of base)
54 : 171104.dasm (1.77% of base)
48 : 155513.dasm (1.34% of base)
34 : 189361.dasm (1.73% of base)
34 : 189395.dasm (1.55% of base)
34 : 171465.dasm (1.74% of base)
34 : 170805.dasm (2.15% of base)
33 : 189392.dasm (0.80% of base)
31 : 170798.dasm (2.18% of base)
31 : 171501.dasm (0.94% of base)
28 : 208078.dasm (1.86% of base)
28 : 170958.dasm (2.40% of base)
24 : 208402.dasm (5.11% of base)
24 : 208414.dasm (2.46% of base)
Top file improvements (bytes):
-722 : 128361.dasm (-1.48% of base)
-160 : 81305.dasm (-7.15% of base)
-104 : 129904.dasm (-1.95% of base)
-88 : 143783.dasm (-14.92% of base)
-62 : 162771.dasm (-0.52% of base)
-56 : 54027.dasm (-2.61% of base)
-50 : 189557.dasm (-4.07% of base)
-50 : 189591.dasm (-4.76% of base)
-50 : 189592.dasm (-4.91% of base)
-48 : 136804.dasm (-0.29% of base)
-47 : 189593.dasm (-3.65% of base)
-44 : 24400.dasm (-1.09% of base)
-40 : 200326.dasm (-9.11% of base)
-37 : 211335.dasm (-2.15% of base)
-37 : 19396.dasm (-1.67% of base)
-36 : 19389.dasm (-2.75% of base)
-36 : 19395.dasm (-1.67% of base)
-30 : 35726.dasm (-1.99% of base)
-30 : 196118.dasm (-8.96% of base)
-30 : 208345.dasm (-8.96% of base)
2673 total files with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.
Top method regressions (bytes):
82 ( 0.93% of base) : 35057.dasm - BigNumber:.cctor()
61 ( 3.38% of base) : 208421.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
61 ( 3.41% of base) : 196166.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
58 ( 3.49% of base) : 196128.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 171543.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
58 ( 3.49% of base) : 208366.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[System.Byte],int,System.String,System.Span`1[System.Byte])
54 ( 0.63% of base) : 129622.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedMembers:.cctor()
54 ( 1.77% of base) : 171104.dasm - System.Security.Cryptography.Pkcs.Pkcs12Builder:SealWithMac(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.HashAlgorithmName,int):this
48 ( 1.34% of base) : 155513.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
34 ( 1.73% of base) : 189361.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.55% of base) : 189395.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 1.74% of base) : 171465.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
34 ( 2.15% of base) : 170805.dasm - System.Security.Cryptography.Pkcs.Asn1.Rfc3161TstInfo:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
33 ( 0.80% of base) : 189392.dasm - System.Security.Cryptography.X509Certificates.Asn1.TbsCertificateAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
31 ( 2.18% of base) : 170798.dasm - System.Security.Cryptography.Pkcs.Asn1.SignedDataAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
31 ( 0.94% of base) : 171501.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 1.86% of base) : 208078.dasm - System.Security.Cryptography.Asn1.RSAPrivateKeyAsn:DecodeCore(byref,System.Formats.Asn1.Asn1Tag,System.ReadOnlyMemory`1[System.Byte],byref)
28 ( 2.40% of base) : 170958.dasm - System.Security.Cryptography.Pkcs.Asn1.KeyAgreeRecipientInfoAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
24 ( 5.11% of base) : 208402.dasm - System.Security.Cryptography.KeyFormatHelper:WritePkcs8(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter,System.Formats.Asn1.AsnWriter):System.Formats.Asn1.AsnWriter
24 ( 2.46% of base) : 208414.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteEcPrivateKey(byref,bool):System.Formats.Asn1.AsnWriter
Top method improvements (bytes):
-722 (-1.48% of base) : 128361.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
-160 (-7.15% of base) : 81305.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution:.cctor()
-104 (-1.95% of base) : 129904.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-62 (-0.52% of base) : 162771.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-56 (-2.61% of base) : 54027.dasm - System.Reflection.Emit.MethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.ILGenerator):this
-50 (-4.07% of base) : 189557.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:ImportFromPem(System.ReadOnlySpan`1[System.Char]):this
-50 (-4.76% of base) : 189591.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromEncryptedPem(System.ReadOnlySpan`1[System.Char],System.ReadOnlySpan`1[System.Char],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-50 (-4.91% of base) : 189592.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:ExtractKeyFromPem(System.ReadOnlySpan`1[System.Char],System.String[],System.Func`1[System.__Canon],System.Func`2[System.__Canon, System.Security.Cryptography.X509Certificates.X509Certificate2]):System.Security.Cryptography.X509Certificates.X509Certificate2
-48 (-0.29% of base) : 136804.dasm - Microsoft.CodeAnalysis.AttributeDescription:.cctor()
-47 (-3.65% of base) : 189593.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2:CreateFromPem(System.ReadOnlySpan`1[System.Char]):System.Security.Cryptography.X509Certificates.X509Certificate2
-44 (-1.09% of base) : 24400.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint]
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
-37 (-2.15% of base) : 211335.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[System.Char],byref):bool
-37 (-1.67% of base) : 19396.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseLetList():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionRangeVariableSyntax]:this
-36 (-2.75% of base) : 19389.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseJoinControlVar():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax:this
-36 (-1.67% of base) : 19395.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseFromControlVars():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CollectionRangeVariableSyntax]:this
-30 (-1.99% of base) : 35726.dasm - System.Xml.Schema.XmlUntypedConverter:ToString(System.Object,System.Xml.IXmlNamespaceResolver):System.String:this
-30 (-8.96% of base) : 196118.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
-30 (-8.96% of base) : 208345.dasm - System.Security.Cryptography.RsaPaddingProcessor:.cctor()
Top method regressions (percentages):
2 (11.76% of base) : 166116.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 134371.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 134958.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]:this
2 (11.76% of base) : 70534.dasm - Enumerator:get_Current():System.Collections.Generic.KeyValuePair`2[System.Diagnostics.Tracing.EventProvider+SessionInfo, System.Boolean]:this
2 (11.76% of base) : 164235.dasm - <OrderBy>d__3`1:System.Collections.Generic.IEnumerator<T>.get_Current():System.Reflection.Metadata.Ecma335.MetadataBuilder+CustomDebugInformationRow:this
1 ( 8.33% of base) : 186933.dasm - CacheEntryState:.ctor(int):this
2 ( 8.33% of base) : 133065.dasm - ChangeRangeWithText:.ctor(Microsoft.CodeAnalysis.Text.TextChangeRange,System.String):this
2 ( 8.33% of base) : 135434.dasm - Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo:.ctor(Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo,Microsoft.Cci.ITypeReference):this
11 ( 6.63% of base) : 157615.dasm - System.Data.SqlTypes.SqlDateTime:CompareTo(System.Data.SqlTypes.SqlDateTime):int:this
11 ( 6.63% of base) : 157504.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
2 ( 5.88% of base) : 166115.dasm - <GetAsyncStepInfos>d__21:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 162380.dasm - Enumerator:System.Collections.IEnumerator.get_Current():System.Object:this
2 ( 5.88% of base) : 164234.dasm - <OrderBy>d__3`1:System.Collections.IEnumerator.get_Current():System.Object:this
1 ( 5.56% of base) : 133681.dasm - <>c:<GetLocalSlotDebugInfos>b__425_1(Microsoft.CodeAnalysis.Emit.EncHoistedLocalInfo):Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 ( 5.56% of base) : 157518.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 5.56% of base) : 157521.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
2 ( 5.56% of base) : 157525.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
2 ( 5.26% of base) : 46551.dasm - System.Speech.Synthesis.TtsEngine.ContourPoint:Equals(System.Speech.Synthesis.TtsEngine.ContourPoint):bool:this
1 ( 5.26% of base) : 24268.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:.ctor(ubyte,int,int):this
4 ( 5.13% of base) : 24258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey:First(Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey,Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey):Microsoft.CodeAnalysis.VisualBasic.Symbols.LexicalSortKey
Top method improvements (percentages):
-14 (-15.73% of base) : 45794.dasm - System.Speech.Recognition.SrgsGrammar.SrgsRule:.cctor()
-88 (-14.92% of base) : 143783.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this
-14 (-14.89% of base) : 41766.dasm - System.Xml.XmlConvert:ToString(System.TimeSpan):System.String
-14 (-14.89% of base) : 35837.dasm - System.Xml.Schema.XmlBaseConverter:DurationToString(System.TimeSpan):System.String
-20 (-14.39% of base) : 138961.dasm - Microsoft.Cci.InstructionOperandTypes:.cctor()
-14 (-14.00% of base) : 35821.dasm - System.Xml.Schema.XmlBaseConverter:YearMonthDurationToString(System.TimeSpan):System.String
-14 (-14.00% of base) : 35838.dasm - System.Xml.Schema.XmlBaseConverter:DayTimeDurationToString(System.TimeSpan):System.String
-14 (-12.96% of base) : 35665.dasm - System.Xml.Schema.XmlUntypedStringConverter:StringToDuration(System.String):System.TimeSpan:this
-14 (-12.61% of base) : 35858.dasm - System.Xml.Schema.XmlBaseConverter:StringToDuration(System.String):System.TimeSpan
-5 (-12.50% of base) : 190123.dasm - Enumerator:.ctor(System.ReadOnlySpan`1[System.Char]):this
-6 (-12.00% of base) : 140307.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ArgDestination:.ctor(ILCompiler.DependencyAnalysis.ReadyToRun.TransitionBlock,int,System.Nullable`1[ILCompiler.DependencyAnalysis.ReadyToRun.ArgLocDesc]):this
-6 (-12.00% of base) : 190120.dasm - PemFieldItem:.ctor(System.ReadOnlySpan`1[System.Char],System.Security.Cryptography.PemFields):this
-14 (-11.97% of base) : 35842.dasm - System.Xml.Schema.XmlBaseConverter:StringToYearMonthDuration(System.String):System.TimeSpan
-14 (-11.97% of base) : 35859.dasm - System.Xml.Schema.XmlBaseConverter:StringToDayTimeDuration(System.String):System.TimeSpan
-6 (-11.76% of base) : 190119.dasm - PemFieldItem:Deconstruct(byref,byref):this
-14 (-11.57% of base) : 182017.dasm - System.IO.Packaging.ContentType:.cctor()
-15 (-11.54% of base) : 190122.dasm - Enumerator:get_Current():Internal.Cryptography.PemEnumerator+Enumerator+PemFieldItem:this
-8 (-10.81% of base) : 162646.dasm - System.Reflection.Metadata.MetadataReader:.cctor()
-2 (-9.52% of base) : 162323.dasm - Enumerator:Reset():this
-40 (-9.11% of base) : 200326.dasm - System.Net.Security.TlsFrameHelper:.cctor()
2673 total methods with Code Size differences (1623 improved, 1050 regressed), 4632 unchanged.

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


Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 6235019
Total bytes of diff: 6152866
Total bytes of delta: -82153 (-1.32% of base)
Total relative delta: -88.18
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
459 : 84711.dasm (0.87% of base)
428 : 141477.dasm (4.03% of base)
294 : 222969.dasm (1.26% of base)
156 : 190709.dasm (3.10% of base)
114 : 115487.dasm (3.21% of base)
78 : 49933.dasm (0.46% of base)
64 : 78897.dasm (2.27% of base)
58 : 217384.dasm (3.45% of base)
58 : 216361.dasm (3.45% of base)
58 : 218461.dasm (3.45% of base)
52 : 216288.dasm (2.99% of base)
52 : 217346.dasm (2.99% of base)
49 : 151978.dasm (5.94% of base)
48 : 30416.dasm (5.23% of base)
46 : 66952.dasm (2.98% of base)
41 : 49634.dasm (2.06% of base)
41 : 66865.dasm (3.29% of base)
40 : 141473.dasm (1.01% of base)
39 : 67925.dasm (2.13% of base)
39 : 33066.dasm (2.48% of base)
Top file improvements (bytes):
-1328 : 149121.dasm (-8.81% of base)
-813 : 50920.dasm (-25.22% of base)
-798 : 41155.dasm (-24.98% of base)
-767 : 23451.dasm (-10.90% of base)
-756 : 42777.dasm (-10.92% of base)
-705 : 53258.dasm (-12.56% of base)
-694 : 63815.dasm (-11.67% of base)
-627 : 31639.dasm (-10.76% of base)
-571 : 52504.dasm (-7.35% of base)
-542 : 53824.dasm (-10.87% of base)
-536 : 24374.dasm (-21.62% of base)
-513 : 43484.dasm (-18.95% of base)
-511 : 53272.dasm (-28.63% of base)
-508 : 42795.dasm (-28.32% of base)
-484 : 42914.dasm (-17.30% of base)
-466 : 23379.dasm (-10.36% of base)
-445 : 74719.dasm (-12.56% of base)
-437 : 46240.dasm (-12.26% of base)
-437 : 42694.dasm (-10.22% of base)
-426 : 24366.dasm (-8.32% of base)
8653 total files with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.
Top method regressions (bytes):
459 ( 0.87% of base) : 84711.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
428 ( 4.03% of base) : 141477.dasm - BigNumber:.cctor()
294 ( 1.26% of base) : 222969.dasm - System.Text.RegularExpressions.RegexCharClass:.cctor()
156 ( 3.10% of base) : 190709.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable()
114 ( 3.21% of base) : 115487.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(System.Int32[],int):System.Object:this
78 ( 0.46% of base) : 49933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundExpression, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],System.Collections.Immutable.ImmutableArray`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
64 ( 2.27% of base) : 78897.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetNextAction():DiffAction:this
58 ( 3.45% of base) : 217384.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 216361.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
58 ( 3.45% of base) : 218461.dasm - System.Security.Cryptography.PasswordBasedEncryption:WritePbeAlgorithmIdentifier(System.Formats.Asn1.AsnWriter,bool,System.String,System.Span`1[Byte],int,System.String,System.Span`1[Byte])
52 ( 2.99% of base) : 216288.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
52 ( 2.99% of base) : 217346.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteSpecifiedECDomain(System.Security.Cryptography.ECParameters,System.Formats.Asn1.AsnWriter)
49 ( 5.94% of base) : 151978.dasm - System.Speech.Internal.Synthesis.PcmConverter:ConvertSamples(System.Byte[]):System.Byte[]:this
48 ( 5.23% of base) : 30416.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:TypeDeclaration(ushort,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BaseListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax
46 ( 2.98% of base) : 66952.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax:this
41 ( 2.06% of base) : 49634.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateSharedPropertyAndMethodModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,bool,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this
41 ( 3.29% of base) : 66865.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax:this
40 ( 1.01% of base) : 141473.dasm - BigNumber:DblToRgbFast(double,System.Byte[],byref,byref):bool
39 ( 2.13% of base) : 67925.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax:this
39 ( 2.48% of base) : 33066.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForStatementSyntax:this
Top method improvements (bytes):
-1328 (-8.81% of base) : 149121.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,System.Int32[],System.Int32[]):this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
-767 (-10.90% of base) : 23451.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCompoundAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-756 (-10.92% of base) : 42777.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,bool):this
-705 (-12.56% of base) : 53258.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this
-694 (-11.67% of base) : 63815.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-627 (-10.76% of base) : 31639.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,bool,bool,bool,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this
-571 (-7.35% of base) : 52504.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint],Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],int,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[TypeParameterConstraint]
-542 (-10.87% of base) : 53824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-536 (-21.62% of base) : 24374.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorAnalysisResult],byref):bool:this
-513 (-18.95% of base) : 43484.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:DecodeWellKnownAttribute(byref):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-484 (-17.30% of base) : 42914.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbol:DecodeWellKnownAttribute(byref):this
-466 (-10.36% of base) : 23379.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
-445 (-12.56% of base) : 74719.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-12.26% of base) : 46240.dasm - SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this
-437 (-10.22% of base) : 42694.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers:CheckGraph(System.Collections.Generic.Dictionary`2[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[Microsoft.CodeAnalysis.CSharp.Symbols.ConstantEvaluationHelpers+Node`1[[Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]])
-426 (-8.32% of base) : 24366.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[BinaryOperatorSignature]):this
Top method regressions (percentages):
2 (14.29% of base) : 169387.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:set_Current(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (14.29% of base) : 1183.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:.ctor(System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]):this
2 (11.76% of base) : 1182.dasm - Microsoft.FSharp.Collections.KeyValuePairDebugFriendly`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_KeyValue():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 169386.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 80417.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisScope:get_FilterSpanOpt():System.Nullable`1[TextSpan]:this
2 (11.76% of base) : 81132.dasm - Microsoft.CodeAnalysis.CodeGen.LocalDefinition:get_SlotInfo():Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo:this
2 (11.76% of base) : 165790.dasm - <GetAsyncStepInfos>d__21:System.Collections.Generic.IEnumerator<Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo>.get_Current():Microsoft.DiaSymReader.SymUnmanagedAsyncStepInfo:this
2 (11.76% of base) : 20579.dasm - Enumerator[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Current():System.Collections.Generic.KeyValuePair`2[Byte,Nullable`1]:this
2 (11.76% of base) : 195162.dasm - System.Linq.Parallel.HashLookupValueList`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:get_Head():System.Linq.Parallel.Pair`2[Byte,Nullable`1]:this
20 (11.24% of base) : 113366.dasm - System.Data.SqlTypes.SqlDecimal:CompareTo(System.Data.SqlTypes.SqlDecimal):int:this
6 (11.11% of base) : 675.dasm - Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1][System.Int64,System.Nullable`1[System.Int32]]:NewOk(long):Microsoft.FSharp.Core.FSharpResult`2[Int64,Nullable`1]
6 (10.91% of base) : 669.dasm - Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1][System.Double,System.Nullable`1[System.Int32]]:NewOk(double):Microsoft.FSharp.Core.FSharpResult`2[Double,Nullable`1]
4 (10.00% of base) : 113397.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt32():System.Data.SqlTypes.SqlInt32:this
4 (10.00% of base) : 113393.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlBoolean():System.Data.SqlTypes.SqlBoolean:this
4 (10.00% of base) : 113400.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlSingle():System.Data.SqlTypes.SqlSingle:this
2 ( 9.52% of base) : 189243.dasm - System.DirectoryServices.Interop.AdsValueHelper:.ctor(System.DirectoryServices.Interop.AdsValue):this
2 ( 9.52% of base) : 161228.dasm - Microsoft.Extensions.Caching.Distributed.DistributedCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
2 ( 9.52% of base) : 161260.dasm - Microsoft.Extensions.Caching.Memory.MemoryCacheEntryOptions:set_AbsoluteExpiration(System.Nullable`1[DateTimeOffset]):this
8 ( 9.41% of base) : 113396.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlInt16():System.Data.SqlTypes.SqlInt16:this
8 ( 9.41% of base) : 113394.dasm - System.Data.SqlTypes.SqlDecimal:ToSqlByte():System.Data.SqlTypes.SqlByte:this
Top method improvements (percentages):
-33 (-45.21% of base) : 84784.dasm - Microsoft.Diagnostics.Tracing.EventPipeEventSource:ResetCompressedHeader():this
-85 (-38.29% of base) : 113919.dasm - System.Data.SqlTypes.SqlString:NotEquals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-155 (-38.18% of base) : 185694.dasm - System.Diagnostics.PerformanceCounter:NextValue():float:this
-22 (-36.07% of base) : 185675.dasm - System.Diagnostics.InstanceData:get_RawValue():long:this
-49 (-35.25% of base) : 113920.dasm - System.Data.SqlTypes.SqlString:LessThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113923.dasm - System.Data.SqlTypes.SqlString:GreaterThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113921.dasm - System.Data.SqlTypes.SqlString:GreaterThan(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113922.dasm - System.Data.SqlTypes.SqlString:LessThanOrEqual(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-34.51% of base) : 113918.dasm - System.Data.SqlTypes.SqlString:Equals(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-49 (-32.67% of base) : 113912.dasm - System.Data.SqlTypes.SqlString:op_Inequality(System.Data.SqlTypes.SqlString,System.Data.SqlTypes.SqlString):System.Data.SqlTypes.SqlBoolean
-20 (-32.26% of base) : 185676.dasm - System.Diagnostics.InstanceData:.ctor(System.String,System.Diagnostics.CounterSample):this
-511 (-28.63% of base) : 53272.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData):bool:this
-508 (-28.32% of base) : 42795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:IsKnownAssemblyAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):bool:this
-48 (-27.91% of base) : 149407.dasm - System.Reflection.Metadata.ImportDefinitionCollection:GetEnumerator():Enumerator:this
-10 (-27.78% of base) : 219366.dasm - CMSG_KEY_AGREE_RECIPIENT_INFO:get_OriginatorPublicKeyInfo():CERT_PUBLIC_KEY_INFO:this
-48 (-25.67% of base) : 149408.dasm - System.Reflection.Metadata.ImportDefinitionCollection:System.Collections.Generic.IEnumerable<System.Reflection.Metadata.ImportDefinition>.GetEnumerator():System.Collections.Generic.IEnumerator`1[ImportDefinition]:this
-45 (-25.57% of base) : 51866.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-45 (-25.57% of base) : 44975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
-813 (-25.22% of base) : 50920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,bool):bool:this
-798 (-24.98% of base) : 41155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,bool,bool):bool:this
8653 total methods with Code Size differences (3334 improved, 5319 regressed), 179 unchanged.

@BruceForstallBruceForstall left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM. Thanks for the contribution!

@EgorBo

Copy link
Copy Markdown
Member

Improvements on alpine 3.12 dotnet/perf-autofiling-issues#1506

@tannergooding

Copy link
Copy Markdown
Member

It looks like a couple of the linked issues are tracked as regressions. We should investigate further and determine why.

@ghostghost locked as resolved and limited conversation to collaborators Nov 3, 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 SuperPMIcommunity-contributionIndicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@alexcovington@EgorBo@tannergooding@sandreenko@kunalspathak@JulieLeeMSFT@BruceForstall@pentp@gfoidl@terrajobst