Skip to content

Arm64: Combine if conditions into compare chains - #79283

Merged
jakobbotsch merged 32 commits into
dotnet:mainfrom
a74nh:runtime_andchains
Mar 21, 2023
Merged

Arm64: Combine if conditions into compare chains#79283
jakobbotsch merged 32 commits into
dotnet:mainfrom
a74nh:runtime_andchains

Conversation

@a74nh

@a74nha74nh commented Dec 6, 2022

Copy link
Copy Markdown
Contributor

Add a new stage optOptimizeCompareChainCondBlock in pass optOptimizeBools.

This aims to reduced the number of conditional jumps by joining cases when multiple conditions gate the execution of a block.

Example 1:
If ( a > b || c == d) { x = y; }

Will be represented in IR as:

 ------------ BB01 -> BB03 (cond), succs={BB02,BB03}
* JTRUE (GT a,b)
------------ BB02 -> BB04 (cond), preds={BB01} succs={BB03,BB04}
* JTRUE (NE c,d)
------------ BB03, preds={BB01, BB02} succs={BB04}
* ASG (x,y)

These operands will be combined into a single AND in the first block (with the first
condition inverted), wrapped by the test condition (NE(...,0)). Giving:

 ------------ BB01 -> BB03 (cond), succs={BB03,BB04}
* JTRUE (NE (AND (LE a,b), (NE c,d)), 0)
------------ BB03, preds={BB01} succs={BB04}
* ASG x,y

Example 2:
If ( a > b && c == d) { x = y; } else { x = z; }

Here the && conditions are connected via an OR. After the pass:

 ------------ BB01 -> BB03 (cond), succs={BB03,BB04}
* JTRUE (NE (OR (LE a,b), (NE c,d)), 0)
------------ BB03, preds={BB01} succs={BB05}
* ASG x,y
------------ BB04, preds={BB01} succs={BB05}
* ASG x,z

Example 3:
If ( a > b || c == d || e < f ) { x = y; }
The first pass of the optimization will combine two of the conditions. The
second pass will then combine remaining condition the earlier chain.

 ------------ BB01 -> BB03 (cond), succs={BB03,BB04}
* JTRUE (NE (OR ((NE (OR (NE c,d), (GE e,f)), 0), (LE a,b))), 0)
------------ BB03, preds={BB01} succs={BB04}
* ASG x,y

This optimization means that every condition within the IF statement is always evaluated,
as opposed to stopping at the first positive match.
Theoretically there is no maximum limit on the size of the generated chain. Therefore cost
checking is used to limit the maximum number of conditions that can be chained together.

Currently the cost checking limits to a maximum of three simple conditions. This is the same behaviour as GCC. Note that LLVM allows chains of much longer length.

Related: #55364

@ghostghost added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI community-contribution Indicates that the PR has been added by a community member labels Dec 6, 2022
@a74nh
a74nh marked this pull request as draft December 6, 2022 16:41
@ghost

ghost commented Dec 6, 2022

Copy link
Copy Markdown

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

Issue Details

Add a new stage optOptimizeCompareChainCondBlock in pass optOptimizeBools. This finds multiple JTRUE(CMP) blocks and combine them into a single JTRUE(AND(CMP,CMP)) block.

All If conversion to use these AND as the condition.

Author:a74nh
Assignees:-
Labels:

area-CodeGen-coreclr, community-contribution

Milestone:-

@a74nha74nh changed the title Create AND chains in bool optimizer passWIP: Create AND chains in bool optimizer passDec 6, 2022
@a74nh

a74nh commented Dec 7, 2022

Copy link
Copy Markdown
ContributorAuthor

(Putting up a WIP patch as I've got a couple of issues to still work through.)

I'm getting an error compiling System.Number:NumberToStringFormat(). This is a big function!

With this optimise bools creates an AND chain connected to JTRUE node 001240. This is not If converted.

At the code generation stage, we'll generate something like:

cmp x1, x2
ccmp x3, x4, eq
beq label

The eq in the ccmp comes from the node for the cmp. The eq in the beq comes from the node for the ccmp.
To ensure this happens, during lowering the AND chain is contained within the JTRUE. Then in genCodeForJumpTrue(), we generate the chain (via genCodeForContainedCompareChain()), which returns the condition for use in the JTRUE.

However, NumberToStringFormat() is a big function. During linear scan, a COPY node is added. This is put at the bottom of the block. ie - between the JTRUE and the contained AND, giving the IR:

....
N455 ( 15, 14) [001250] -c-XG--N--- t1250 = * EQ int REG NA <l:$36f, c:$370>
/--* t1239 int +--* t1250 int N457 ( 22, 18) [003730] Jc-XG--N--- * AND void REG NA
N001 ( 1, 1) [004318] ----------- t4318 = LCL_VAR int V16 loc12 x10 REG x10
/--* t4318 int N002 ( 2, 2) [004319] ----------- t4319 = * COPY int REG x1
N459 ( 24, 20) [001240] ---XG------ * JTRUE void REG NA $VN.Void

Note that the AND has the contained flag set.

Now during the code generation, the entire AND chain is ignored (because it is contained). The COPY node generates a mov but then falls over with liveness asserts - it's trying to move a value from the AND chain, but the AND chain hasn't been generated yet! The COPY can't be moved before the chain for the same reasons.

Alternatively, I was thinking not to contain the AND chain within the JTRUE. Instead, the final AND would be marked as setting flags, and when generating JTRUE it would parse the chain to find the condition for the final compare. I think this is the way forward, but wanted to check before rewriting things.

Full dump file:
dump_18888.txt

@kunalspathak, @jakobbotsch what are your thoughts?

@jakobbotsch

jakobbotsch commented Dec 7, 2022

Copy link
Copy Markdown
Member

Yes, LSRA will spill and insert resolution nodes before the terminating nodes like JTRUE. It means we cannot in general contain things inside the JTRUE as the contained trees may be using locals that are no longer present in registers. @TIHan ran into the same problem in #76731 (before that, I did not realize this would be a problem). It would probably be possible to teach LSRA about this so that it could insert resolution after the JTRUE instead when necessary (by splitting the edge -- already done in some cases).

I think your suggestion is fine to make forward progress, assuming you validate that the AND comes right before the JTRUE, in the same way that other relops are handled.

@a74nh

a74nh commented Dec 7, 2022

Copy link
Copy Markdown
ContributorAuthor

@TIHan ran into the same problem in #76731

A few months back, I spent about a half day trying to do this, then realised it was trickier than expected and gave up.

I think your suggestion is fine to make forward progress, assuming you validate that the AND comes right before the JTRUE, in the same way that other relops are handled.

ok, will go this way then. Thanks.

@jakobbotsch

Copy link
Copy Markdown
Member

It would probably be possible to teach LSRA about this so that it could insert resolution after the JTRUE instead when necessary (by splitting the edge -- already done in some cases).

LSRA actually already handles the situation for other cases so it does not look that complicated to extend it:

// Next, if this blocks ends with a switch table, or for Arm64, ends with JCMP instruction,
// make sure to not copy into the registers that are consumed at the end of this block.
//
// Note: Only switches and JCMP (for Arm4) have input regs (and so can be fed by copies), so those
// are the only block-ending branches that need special handling.
regMaskTP consumedRegs = RBM_NONE;
if (block->bbJumpKind == BBJ_SWITCH)
{
// At this point, Lowering has transformed any non-switch-table blocks into
// cascading ifs.
GenTree* switchTable = LIR::AsRange(block).LastNode();
assert(switchTable != nullptr && switchTable->OperGet() == GT_SWITCH_TABLE);
consumedRegs = switchTable->gtRsvdRegs;
GenTree* op1 = switchTable->gtGetOp1();
GenTree* op2 = switchTable->gtGetOp2();
noway_assert(op1 != nullptr && op2 != nullptr);
assert(op1->GetRegNum() != REG_NA && op2->GetRegNum() != REG_NA);
// No floating point values, so no need to worry about the register type
// (i.e. for ARM32, where we used the genRegMask overload with a type).
assert(varTypeIsIntegralOrI(op1) && varTypeIsIntegralOrI(op2));
consumedRegs |= genRegMask(op1->GetRegNum());
consumedRegs |= genRegMask(op2->GetRegNum());
// Special handling for GT_COPY to not resolve into the source
// of switch's operand.
if (op1->OperIs(GT_COPY))
{
GenTree* srcOp1 = op1->gtGetOp1();
consumedRegs |= genRegMask(srcOp1->GetRegNum());
}
}
#if defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64)
// Next, if this blocks ends with a JCMP, we have to make sure:
// 1. Not to copy into the register that JCMP uses
// e.g. JCMP w21, BRANCH
// 2. Not to copy into the source of JCMP's operand before it is consumed
// e.g. Should not use w0 since it will contain wrong value after resolution
// call METHOD
// ; mov w0, w19 <-- should not resolve in w0 here.
// mov w21, w0
// JCMP w21, BRANCH
// 3. Not to modify the local variable it must consume
// Note: GT_COPY has special handling in codegen and its generation is merged with the
// node that consumes its result. So both, the input and output regs of GT_COPY must be
// excluded from the set available for resolution.
LclVarDsc* jcmpLocalVarDsc = nullptr;
if (block->bbJumpKind == BBJ_COND)
{
GenTree* lastNode = LIR::AsRange(block).LastNode();
if (lastNode->OperIs(GT_JCMP))
{
GenTree* op1 = lastNode->gtGetOp1();
consumedRegs |= genRegMask(op1->GetRegNum());
if (op1->OperIs(GT_COPY))
{
GenTree* srcOp1 = op1->gtGetOp1();
consumedRegs |= genRegMask(srcOp1->GetRegNum());
}
if (op1->IsLocal())
{
GenTreeLclVarCommon* lcl = op1->AsLclVarCommon();
jcmpLocalVarDsc = &compiler->lvaTable[lcl->GetLclNum()];
}
}
}
#endif// defined(TARGET_ARM64) || defined(TARGET_LOONGARCH64)

@a74nh

Copy link
Copy Markdown
ContributorAuthor

LSRA actually already handles the situation for other cases so it does not look that complicated to extend it:

In the end not containing anything inside the JTRUE made it work fine. The AND node is just treated the same way as a CMP node. Containing inside a JTRUE would need a new pull request, as there would be quite a lot of changes not directly applicable here.

Been distracted elsewhere, but this is looking good now, so I'll be taking it out of draft shorty....

@jakobbotsch

Copy link
Copy Markdown
Member

That's fine, this was also more of a general note regarding #76731 -- I just stumbled upon that LSRA code today.

@a74nh
a74nh marked this pull request as ready for review January 25, 2023 18:08
@a74nh

Copy link
Copy Markdown
ContributorAuthor

Taking this patch out of draft. It needs some more test cases in compareAnd3Chains, but otherwise I'm happy with it now.

optOptimizeCompareChainCondBlock() merges two compares into an AND chain.
Due to the the way the blocks flow, we currently only handle cases where the two conditions are ORed together.
See the large comment block for examples, and also the new tests.

Adding cases that are ANDed together would require a little more thought as it doesn't quite fit. You'd either need an OR or ANDNOT chains or epiologues mid block - I've not fully considered how it'd work.

optOptimizeBools() now iterates through bocks in reverse order, this allows for multiple conditions to be chained. It doesn't seem to have caused any issues with the other optimizations there.

The rest of the changes are to support JTRUE having an AND child.

In particular, AND chains can only be reversed by adding a NOT on the front of the chain. The changes in fgopt and ifconversion make sure that AND chains are never reversed.

Getting the chain code working in lowering/codegen was a little fiddly.

I've taken care to avoid code size regressions. In particular, avoiding optimising where the code would normally generate a CBZ or TST instruction. The handful of regressions remaining are due to the immediate size in a CCMP instruction being smaller than a CMP instruction.

@jakobbotsch

Copy link
Copy Markdown
Member

Given this is a lowering issue, and the low number of regressions (+416 bytes) compared to improvements (-148,480 bytes) is it ok to leave that for a later PR?

Yes, that's completely fine -- thanks for checking the regressions in this level of detail.

@a74nh

Copy link
Copy Markdown
ContributorAuthor

Yes, that's completely fine -- thanks for checking the regressions in this level of detail.

Ok, in that case I think this patch is ready then. Looks like the failing test is a known error. And I think I've addressed all the review comments.

@jakobbotsch

Copy link
Copy Markdown
Member

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 3 pipeline(s).

Comment threadsrc/coreclr/jit/optimizer.cpp Outdated
Comment on lines +9532 to +9543
int op1Cost = cond1->GetCostEx();
int op2Cost = cond2->GetCostEx();
int maxOp1Cost = op1IsCondChain ? 35 : 7;
int maxOp2Cost = op2IsCondChain ? 35 : 7;

// Cost to allow for chain size of three.
if (op1Cost > maxOp1Cost || op2Cost > maxOp2Cost)
{
JITDUMP("Skipping CompareChainCond that will evaluate conditions unconditionally at costs %d,%d\n", op1Cost,
op2Cost);
return false;
}

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.

Did you end up adding some handling for potentially expensive trees somewhere else?

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.

We're iterating forwards through the blocks now, so that I think gets rid of that issue:

if (expensive1 || cheap1 )

  • both of expensive1 and cheap1 would be checked against cost 7.

if (expensive1 || cheap1 || cheap2 )

  • First iteration both of expensive1 and cheap1 would be checked against cost 7.
  • If first iteration passed, then second pass the combined (expensive1+cheap1) would be checked against 35 and cheap2 against 7.
  • If first iteration failed, then both cheap1 and cheap2 would be checked against 7.

if (cheap1 || cheap2 || expensive1)

  • both cheap1 and cheap2 would be checked against cost 7. Which would pass.
  • Then (cheap1+cheap2) against 35 and expensive1 against 7.

@jakobbotschjakobbotschMar 17, 2023

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.

It's odd to me that it's possible to "defeat" the check:

[MethodImpl(MethodImplOptions.NoInlining)]publicstaticintFoo(inta,intb){if(a>10&&(((a*a*a*a*a>3)&(a==20))!=false)){return42;}return100;}

this produces:

G_M63574_IG01: ;; offset=0000H A9BF7BFD stp fp, lr,[sp, #-0x10]! 910003FD mov fp,sp ;; size=8 bbWeight=1 PerfScore 1.50G_M63574_IG02: ;; offset=0008H 1B007C01 mul w1, w0, w0 1B007C21 mul w1, w1, w0 1B007C21 mul w1, w1, w0 1B007C21 mul w1, w1, w0 52800C82 mov w2, #10052800543mov w3, #42 71000C3F cmp w1, #3 7A54C800 ccmp w0, #20,0, gt 7A4A080E ccmp w0, #10, nzc, eq 1A83D040 csel w0, w2, w3, le ;; size=40 bbWeight=1 PerfScore 11.00G_M63574_IG03: ;; offset=0030H A8C17BFD ldp fp, lr,[sp], #0x10 D65F03C0 ret lr ;; size=8 bbWeight=1 PerfScore 2.00

Of course it's a very constructed example but I would be afraid that there are more natural looking examples.
I suppose to fix this you would need the recursive walk you wanted to avoid. I don't think that's expensive -- the code below calls gtSetEvalOrder and fgSetStmtSeq and they both end up doing these kinds of full tree walks anyway -- but it's not as elegant. It would make me feel a bit more at ease, however, to find and limit the cost of each "leaf" in the compare chain.

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.

I think we can leave it as is, it's probably fine in practice. Will leave it up to you.

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.

The cost of (((a * a * a * a * a > 3) & (a == 20)) is 35, which is on the limit for combing with the a > 10

Whereas the cost after combining, for example, op1 > 3 && op2 == 10 && op3 >= 12 is 32. (It's fairly high because of the two lots of EQ(AND,0)).

Looking at this again, a limit of 35 is probably too high as it's allowing 4 items to chain together. I should probably drop it to 31 to prevent op1 > 3 && op2 == 10 && op3 >= 12 combing with anything else.

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.

With the new costing it'll still allow like (((a * a * a * a > 3) & (a == 20)) (ie one less than you had before).
To improve it, further I think we'd have to somehow remove all the EQ(AND,0) blocks from the costings (as we know they'll vanish during lowering). Not sure it's worth it, so happy to leave as is now.

@a74nh

Copy link
Copy Markdown
ContributorAuthor

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn

Those are all looking good - just X86 failures, which this patch doesn't touch

Comment threadsrc/coreclr/jit/optimizer.cpp Outdated
Comment threadsrc/coreclr/jit/optimizer.cpp Outdated
Comment threadsrc/coreclr/jit/optimizer.cpp Outdated
Comment threadsrc/coreclr/jit/optimizer.cpp Outdated

@jakobbotschjakobbotsch left a comment

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.

LGTM with a few suggestions. Very nice work, great to see this.

@a74nh

Copy link
Copy Markdown
ContributorAuthor

With the max cost reduced the diffs haven't changed much:

Diffs are based on 1,496,829 contexts (401,888 MinOpts, 1,094,941 FullOpts).

MISSED contexts: base: 86 (0.01%), diff: 88 (0.01%)

Overall (-147,888 bytes)
CollectionBase size (bytes)Diff size (bytes)
libraries_tests.pmi.linux.arm64.checked.mch162,440,896-27,068
libraries.pmi.linux.arm64.checked.mch66,031,816-28,324
benchmarks.run.linux.arm64.checked.mch18,839,792-6,420
coreclr_tests.run.linux.arm64.checked.mch536,166,368-71,888
libraries.crossgen2.linux.arm64.checked.mch46,085,472-14,188
MinOpts (+0 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch361,870,520+0
FullOpts (-147,888 bytes)
CollectionBase size (bytes)Diff size (bytes)
libraries_tests.pmi.linux.arm64.checked.mch156,698,000-27,068
libraries.pmi.linux.arm64.checked.mch64,495,464-28,324
benchmarks.run.linux.arm64.checked.mch17,775,424-6,420
coreclr_tests.run.linux.arm64.checked.mch174,295,848-71,888
libraries.crossgen2.linux.arm64.checked.mch46,083,964-14,188
Example diffs
libraries_tests.pmi.linux.arm64.checked.mch
-20 (-35.71%) : 199251.dasm - System.Runtime.InteropServices.Tests.LibObjC:SupportedOnPlatform(int):bool
@@ -7,59 +7,43 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) int -> x0 single-def+; V00 arg0 [V00,T00] ( 5, 5 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M12476_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M12476_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M12476_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M12476_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #1
- beq G_M12476_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M12476_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #2- beq G_M12476_IG04- cmp w0, #4- bne G_M12476_IG06- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M12476_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M12476_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #2, z, ne+ ccmp w0, #4, z, ne+ csel w0, w1, wzr, ne+ ;; size=20 bbWeight=1 PerfScore 2.50+G_M12476_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M12476_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M12476_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 56, prolog size 8, PerfScore 12.60, instruction count 14, allocated bytes for code 56 (MethodHash=d337cf43) for method System.Runtime.InteropServices.Tests.LibObjC:SupportedOnPlatform(int):bool+; Total bytes of code 36, prolog size 8, PerfScore 9.60, instruction count 9, allocated bytes for code 36 (MethodHash=d337cf43) for method System.Runtime.InteropServices.Tests.LibObjC:SupportedOnPlatform(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-20 (-35.71%) : 73785.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13d.usage13d.Parent:Foo(int,int,int):int:this
@@ -8,58 +8,44 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def
; V01 arg1 [V01,T00] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T01] ( 3, 2.50) int -> x2 single-def-; V03 arg3 [V03,T02] ( 3, 2.50) int -> x3 single-def+; V02 arg2 [V02,T01] ( 3, 3 ) int -> x2 single-def+; V03 arg3 [V03,T02] ( 3, 3 ) int -> x3 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M39116_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M39116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39116_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w1, #2- bne G_M39116_IG05- ;; size=8 bbWeight=1 PerfScore 1.50-G_M39116_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w2, #1- bne G_M39116_IG05- cmp w3, #3- bne G_M39116_IG05- mov w0, wzr- ;; size=20 bbWeight=0.50 PerfScore 1.75-G_M39116_IG04: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M39116_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M39116_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M39116_IG06: ; bbWeight=0.50, epilog, nogc, extend+ cmp w1, #2+ ccmp w2, #1, 0, eq+ ccmp w3, #3, 0, eq+ csel w0, w0, wzr, ne+ ;; size=20 bbWeight=1 PerfScore 2.50+G_M39116_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 56, prolog size 8, PerfScore 12.60, instruction count 14, allocated bytes for code 56 (MethodHash=7fce6733) for method ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13d.usage13d.Parent:Foo(int,int,int):int:this+; Total bytes of code 36, prolog size 8, PerfScore 9.60, instruction count 9, allocated bytes for code 36 (MethodHash=7fce6733) for method ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13d.usage13d.Parent:Foo(int,int,int):int:this
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-33.33%) : 107909.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
@@ -6,57 +6,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M56201_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M56201_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M56201_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M56201_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #4
- bls G_M56201_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M56201_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #9- bne G_M56201_IG06- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M56201_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M56201_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #9, z, hi+ csel w0, wzr, w1, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M56201_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M56201_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M56201_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 48, prolog size 8, PerfScore 11.05, instruction count 12, allocated bytes for code 48 (MethodHash=18a32476) for method Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=18a32476) for method Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+4 (+1.14%) : 315758.dasm - Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:b__92_1(long,long):System.Object[]:this
@@ -100,53 +100,50 @@ G_M18778_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- cbz x19, G_M18778_IG08+ cbz x19, G_M18778_IG06
;; size=152 bbWeight=1 PerfScore 27.50
G_M18778_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+ mov x0, #0xD1FFAB1E
cmn x20, #1
- bne G_M18778_IG04- mov x0, #0xD1FFAB1E- cmp x19, x0- beq G_M18778_IG07- ;; size=20 bbWeight=0.50 PerfScore 1.75-G_M18778_IG04: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz- mov x0, #0xD1FFAB1E- cmp x20, x0- bne G_M18778_IG05- cmn x19, #1- beq G_M18778_IG07- ;; size=20 bbWeight=0.50 PerfScore 1.75-G_M18778_IG05: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz+ ccmp x19, x0, 0, eq+ cset x0, eq+ mov x2, #0xD1FFAB1E+ movn x3, #0+ cmp x20, x2+ ccmp x19, x3, 0, eq+ cset x2, eq+ orr w0, w0, w2+ cbnz w0, G_M18778_IG05
mov x22, x21
; gcrRegs +[x22]
cmp x19, #0
- beq G_M18778_IG12+ beq G_M18778_IG10
cmn x19, #1
- bne G_M18778_IG06+ bne G_M18778_IG04
adds xzr, x1, x1
- bne G_M18778_IG06- bvs G_M18778_IG11- ;; size=32 bbWeight=0.50 PerfScore 3.00-G_M18778_IG06: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref+ bne G_M18778_IG04+ bvs G_M18778_IG09+ ;; size=76 bbWeight=0.50 PerfScore 6.00+G_M18778_IG04: ; bbWeight=0.50, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
sdiv x0, x1, x19
cmp x0, x20
cset x19, eq
- b G_M18778_IG09+ b G_M18778_IG07
;; size=16 bbWeight=0.50 PerfScore 10.50
-G_M18778_IG07: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref+G_M18778_IG05: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
mov x22, x21
; gcrRegs +[x22]
mov w19, wzr
- b G_M18778_IG09+ b G_M18778_IG07
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M18778_IG08: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref+G_M18778_IG06: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
mov x22, x21
; gcrRegs +[x22]
mov w19, #1
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M18778_IG09: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref+G_M18778_IG07: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -162,22 +159,22 @@ G_M18778_IG09: ; bbWeight=1, gcrefRegs=600000 {x21 x22}, byrefRegs=0000 {
mov x0, x21
; gcrRegs +[x0]
;; size=40 bbWeight=1 PerfScore 6.50
-G_M18778_IG10: ; bbWeight=1, epilog, nogc, extend+G_M18778_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M18778_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M18778_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x21]
bl CORINFO_HELP_OVERFLOW
;; size=4 bbWeight=0 PerfScore 0.00
-G_M18778_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M18778_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 16, PerfScore 96.20, instruction count 88, allocated bytes for code 352 (MethodHash=910fb6a5) for method Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int64TestMultiplications>b__92_1(long,long):System.Object[]:this+; Total bytes of code 356, prolog size 16, PerfScore 96.10, instruction count 89, allocated bytes for code 356 (MethodHash=910fb6a5) for method Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int64TestMultiplications>b__92_1(long,long):System.Object[]:this
; ============================================================
Unwind Info:
@@ -188,7 +185,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 88 (0x00058) Actual length = 352 (0x000160)+ Function Length : 89 (0x00059) Actual length = 356 (0x000164)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+2.44%) : 110651.dasm - Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:IsLegalBraceEscape(System.String,int,int,byref):bool
@@ -39,57 +39,55 @@ G_M46472_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, by
ldr w4, [x0, #0x08]
add w5, w1, #1
cmp w4, w5
- ble G_M46472_IG07+ ble G_M46472_IG05
;; size=16 bbWeight=1 PerfScore 5.00
G_M46472_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz
cmp w1, w4
- bhs G_M46472_IG11+ bhs G_M46472_IG09
add x0, x0, #12
; gcrRegs -[x0]
; byrRegs +[x0]
ldrh w6, [x0, w1, UXTW #2]
cmp w5, w4
- bhs G_M46472_IG11+ bhs G_M46472_IG09
ldrh w0, [x0, w5, UXTW #2]
; byrRegs -[x0]
+ mov w4, #123
cmp w6, #123
- bne G_M46472_IG04- cmp w0, #123- beq G_M46472_IG05- ;; size=44 bbWeight=0.50 PerfScore 6.25-G_M46472_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz+ ccmp w0, w4, 0, eq+ cset x4, ne+ mov w5, #125
cmp w6, #125
- bne G_M46472_IG07- cmp w0, #125- bne G_M46472_IG07- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M46472_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref, isz+ ccmp w0, w5, 0, eq+ cset x0, ne+ tst w4, w0+ bne G_M46472_IG05
add w0, w2, w1
cmp w0, #0
- blt G_M46472_IG09+ blt G_M46472_IG07
add w1, w0, #2
cmp w1, w0
- blt G_M46472_IG10+ blt G_M46472_IG08
str w0, [x3]
mov w0, #2
str w0, [x3, #0x04]
mov w0, #1
- ;; size=40 bbWeight=0.50 PerfScore 3.50+ ;; size=108 bbWeight=0.50 PerfScore 11.00+G_M46472_IG04: ; bbWeight=0.50, epilog, nogc, extend+ ldr x19, [sp, #0x18]+ ldp fp, lr, [sp], #0x20+ ret lr+ ;; size=12 bbWeight=0.50 PerfScore 2.00+G_M46472_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, gcvars, byref+ str xzr, [x3]+ mov w0, wzr+ ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M46472_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M46472_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, gcvars, byref- str xzr, [x3]- mov w0, wzr- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M46472_IG08: ; bbWeight=0.50, epilog, nogc, extend- ldr x19, [sp, #0x18]- ldp fp, lr, [sp], #0x20- ret lr- ;; size=12 bbWeight=0.50 PerfScore 2.00-G_M46472_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M46472_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x3]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -120,7 +118,7 @@ G_M46472_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=80 bbWeight=0 PerfScore 0.00
-G_M46472_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M46472_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -150,12 +148,12 @@ G_M46472_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=80 bbWeight=0 PerfScore 0.00
-G_M46472_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M46472_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 12, PerfScore 56.30, instruction count 82, allocated bytes for code 328 (MethodHash=3eb14a77) for method Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:IsLegalBraceEscape(System.String,int,int,byref):bool+; Total bytes of code 336, prolog size 12, PerfScore 56.85, instruction count 84, allocated bytes for code 336 (MethodHash=3eb14a77) for method Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:IsLegalBraceEscape(System.String,int,int,byref):bool
; ============================================================
Unwind Info:
@@ -166,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.76%) : 231893.dasm - NuGet.Packaging.Signing.DerEncoding.DerEncoder:IsPrintableStringCharacter(ushort):bool
@@ -24,33 +24,33 @@ G_M22473_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M22473_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, #90
- ble G_M22473_IG06+ ble G_M22473_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M22473_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w0, #122
cmp w1, #97
- blt G_M22473_IG05- cmp w1, #122- ble G_M22473_IG06- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M22473_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w1, w0, 0, ge+ cset x0, gt+ mov w2, #57
cmp w1, #48
- blt G_M22473_IG08- cmp w1, #57- bgt G_M22473_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M22473_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ ccmp w1, w2, 0, ge+ cset x2, gt+ tst w0, w2+ bne G_M22473_IG07+ ;; size=40 bbWeight=0.50 PerfScore 2.75+G_M22473_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22473_IG07: ; bbWeight=0.50, epilog, nogc, extend+G_M22473_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M22473_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz+G_M22473_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w1, #58
- bhi G_M22473_IG10+ bhi G_M22473_IG09
sub w0, w1, #32
cmp w0, #15
- bhi G_M22473_IG09+ bhi G_M22473_IG08
mov w0, w0
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -58,50 +58,50 @@ G_M22473_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
add x1, x1, x2
br x1
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M22473_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M22473_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, #58
- beq G_M22473_IG11- b G_M22473_IG13+ beq G_M22473_IG10+ b G_M22473_IG12
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M22473_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M22473_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ mov w0, #63
cmp w1, #61
- beq G_M22473_IG11- cmp w1, #63- bne G_M22473_IG13- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M22473_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ ccmp w1, w0, z, ne+ bne G_M22473_IG12+ ;; size=16 bbWeight=0.50 PerfScore 1.25+G_M22473_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22473_IG12: ; bbWeight=0.50, epilog, nogc, extend+G_M22473_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M22473_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M22473_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22473_IG14: ; bbWeight=0.50, epilog, nogc, extend+G_M22473_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-RWD00 dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG13 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02- dd	G_M22473_IG11 - G_M22473_IG02+RWD00 dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG12 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02+ dd	G_M22473_IG10 - G_M22473_IG02-; Total bytes of code 168, prolog size 8, PerfScore 35.30, instruction count 42, allocated bytes for code 168 (MethodHash=95b1a836) for method NuGet.Packaging.Signing.DerEncoding.DerEncoder:IsPrintableStringCharacter(ushort):bool+; Total bytes of code 176, prolog size 8, PerfScore 35.60, instruction count 44, allocated bytes for code 176 (MethodHash=95b1a836) for method NuGet.Packaging.Signing.DerEncoding.DerEncoder:IsPrintableStringCharacter(ushort):bool
; ============================================================
Unwind Info:
@@ -112,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.linux.arm64.checked.mch
-20 (-38.46%) : 86103.dasm - ILCompiler.DependencyAnalysis.Relocation:GetFileRelocationType(int):int
@@ -6,56 +6,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 6, 6 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M18504_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M18504_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M18504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M18504_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #3
- beq G_M18504_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M18504_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #7- beq G_M18504_IG04- cmp w0, #10- bne G_M18504_IG05- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M18504_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc+ ccmp w0, #7, z, ne+ ccmp w0, #10, z, ne+ csel w0, wzr, w0, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M18504_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M18504_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M18504_IG06: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 52, prolog size 8, PerfScore 11.95, instruction count 13, allocated bytes for code 52 (MethodHash=2aa8b7b7) for method ILCompiler.DependencyAnalysis.Relocation:GetFileRelocationType(int):int+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=2aa8b7b7) for method ILCompiler.DependencyAnalysis.Relocation:GetFileRelocationType(int):int
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-33.33%) : 179075.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:IsFloatingPoint(int):bool
@@ -6,57 +6,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M35125_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M35125_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M35125_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M35125_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #3
- beq G_M35125_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M35125_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #4- bne G_M35125_IG06- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M35125_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M35125_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #4, z, ne+ csel w0, wzr, w1, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M35125_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M35125_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M35125_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 48, prolog size 8, PerfScore 11.05, instruction count 12, allocated bytes for code 48 (MethodHash=210876ca) for method Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:IsFloatingPoint(int):bool+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=210876ca) for method Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:IsFloatingPoint(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-20 (-33.33%) : 153610.dasm - ILCompiler.Reflection.ReadyToRun.StringBuilderExtensions:NeedsEscaping(int):bool
@@ -6,60 +6,44 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) int -> x0 single-def+; V00 arg0 [V00,T00] ( 5, 5 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M45715_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M45715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M45715_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M45715_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w1, w0, #12
+ mov w2, #1
cmp w1, #2
- bls G_M45715_IG04- ;; size=12 bbWeight=1 PerfScore 2.00-G_M45715_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #16- beq G_M45715_IG04- cmp w0, #29- bne G_M45715_IG06- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M45715_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M45715_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #16, z, hi+ ccmp w0, #29, z, ne+ csel w0, wzr, w2, ne+ ;; size=24 bbWeight=1 PerfScore 3.00+G_M45715_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M45715_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M45715_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 60, prolog size 8, PerfScore 13.50, instruction count 15, allocated bytes for code 60 (MethodHash=6fda4d6c) for method ILCompiler.Reflection.ReadyToRun.StringBuilderExtensions:NeedsEscaping(int):bool+; Total bytes of code 40, prolog size 8, PerfScore 10.50, instruction count 10, allocated bytes for code 40 (MethodHash=6fda4d6c) for method ILCompiler.Reflection.ReadyToRun.StringBuilderExtensions:NeedsEscaping(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+8 (+5.71%) : 218007.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
@@ -9,8 +9,8 @@
;
; V00 arg0 [V00,T02] ( 5, 3.96) ref -> x0 class-hnd single-def
; V01 loc0 [V01,T05] ( 2, 1 ) ref -> x0 class-hnd single-def
-; V02 loc1 [V02,T01] ( 5, 16.50) int -> x2 -; V03 loc2 [V03,T00] ( 7, 18 ) ushort -> x3 +; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2 +; V03 loc2 [V03,T01] ( 7, 16 ) ushort -> x3 
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;* V05 tmp1 [V05,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V06 cse0 [V06,T03] ( 5, 5.92) int -> x1 "CSE - aggressive"
@@ -45,54 +45,50 @@ G_M10687_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
mov w2, wzr
cmp w1, #0
- ble G_M10687_IG13+ ble G_M10687_IG10
add x0, x0, #12
; gcrRegs -[x0]
; byrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M10687_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrh w3, [x0, w2, UXTW #2]
+ mov w4, #57
cmp w3, #48
- blt G_M10687_IG10- ;; size=12 bbWeight=4 PerfScore 18.00-G_M10687_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz- cmp w3, #57- ble G_M10687_IG12- ;; size=8 bbWeight=2 PerfScore 3.00-G_M10687_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ cset x4, le+ mov w5, #102
cmp w3, #97
- blt G_M10687_IG11- cmp w3, #102- ble G_M10687_IG12- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w5, 0, ge+ cset x5, le+ orr w4, w4, w5+ cbnz w4, G_M10687_IG09+ mov w4, #70
cmp w3, #65
- blt G_M10687_IG15- cmp w3, #70- bgt G_M10687_IG15- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ bgt G_M10687_IG12+ ;; size=60 bbWeight=4 PerfScore 44.00+G_M10687_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1
cmp w1, w2
bgt G_M10687_IG08
;; size=12 bbWeight=4 PerfScore 8.00
-G_M10687_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M10687_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG14: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M10687_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M10687_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG16: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 140, prolog size 8, PerfScore 64.84, instruction count 35, allocated bytes for code 140 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool+; Total bytes of code 148, prolog size 8, PerfScore 76.64, instruction count 37, allocated bytes for code 148 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
; ============================================================
Unwind Info:
@@ -103,7 +99,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+5.71%) : 179103.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
@@ -9,8 +9,8 @@
;
; V00 arg0 [V00,T02] ( 5, 3.96) ref -> x0 class-hnd single-def
; V01 loc0 [V01,T05] ( 2, 1 ) ref -> x0 class-hnd single-def
-; V02 loc1 [V02,T01] ( 5, 16.50) int -> x2 -; V03 loc2 [V03,T00] ( 7, 18 ) ushort -> x3 +; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2 +; V03 loc2 [V03,T01] ( 7, 16 ) ushort -> x3 
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;* V05 tmp1 [V05,T06] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V06 cse0 [V06,T03] ( 5, 5.92) int -> x1 "CSE - aggressive"
@@ -45,54 +45,50 @@ G_M10687_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
mov w2, wzr
cmp w1, #0
- ble G_M10687_IG13+ ble G_M10687_IG10
add x0, x0, #12
; gcrRegs -[x0]
; byrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M10687_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
ldrh w3, [x0, w2, UXTW #2]
+ mov w4, #57
cmp w3, #48
- blt G_M10687_IG10- ;; size=12 bbWeight=4 PerfScore 18.00-G_M10687_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz- cmp w3, #57- ble G_M10687_IG12- ;; size=8 bbWeight=2 PerfScore 3.00-G_M10687_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ cset x4, le+ mov w5, #102
cmp w3, #97
- blt G_M10687_IG11- cmp w3, #102- ble G_M10687_IG12- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w5, 0, ge+ cset x5, le+ orr w4, w4, w5+ cbnz w4, G_M10687_IG09+ mov w4, #70
cmp w3, #65
- blt G_M10687_IG15- cmp w3, #70- bgt G_M10687_IG15- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ bgt G_M10687_IG12+ ;; size=60 bbWeight=4 PerfScore 44.00+G_M10687_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1
cmp w1, w2
bgt G_M10687_IG08
;; size=12 bbWeight=4 PerfScore 8.00
-G_M10687_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M10687_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG14: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M10687_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M10687_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG16: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 140, prolog size 8, PerfScore 64.84, instruction count 35, allocated bytes for code 140 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool+; Total bytes of code 148, prolog size 8, PerfScore 76.64, instruction count 37, allocated bytes for code 148 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
; ============================================================
Unwind Info:
@@ -103,7 +99,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+8.33%) : 191794.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
@@ -23,39 +23,37 @@ G_M29165_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M29165_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, #90
- ble G_M29165_IG08+ ble G_M29165_IG06
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M29165_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w1, #122
cmp w0, #97
- blt G_M29165_IG05- cmp w0, #122- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, w1, 0, ge+ cset x1, le+ mov w2, #57+ mov w3, #95
cmp w0, #48
- blt G_M29165_IG06- cmp w0, #57- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #95- beq G_M29165_IG08+ ccmp w0, w2, 0, ge+ ccmp w0, w3, z, gt+ cset x2, eq+ orr w1, w1, w2+ cbnz w1, G_M29165_IG06
cmp w0, #45
cset x0, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25+ ;; size=56 bbWeight=0.50 PerfScore 3.75+G_M29165_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ldp fp, lr, [sp], #0x10+ ret lr+ ;; size=8 bbWeight=0.50 PerfScore 1.00+G_M29165_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ mov w0, #1+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M29165_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M29165_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M29165_IG09: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00-; Total bytes of code 96, prolog size 8, PerfScore 20.35, instruction count 24, allocated bytes for code 96 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool+; Total bytes of code 104, prolog size 8, PerfScore 20.65, instruction count 26, allocated bytes for code 104 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
; ============================================================
Unwind Info:
@@ -66,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run.linux.arm64.checked.mch
-24 (-27.27%) : 1131.dasm - System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
@@ -28,43 +28,31 @@ G_M46525_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M46525_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz- cmp w1, #22- beq G_M46525_IG06- cmp w1, #24- beq G_M46525_IG06- cmp w1, #25- beq G_M46525_IG06- cmp w1, #28- bne G_M46525_IG08- ;; size=32 bbWeight=0.50 PerfScore 3.00-G_M46525_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M46525_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M46525_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M46525_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M46525_IG09: ; bbWeight=0.50, epilog, nogc, extend+ cmp w1, #22+ ccmp w1, #24, z, ne+ ccmp w1, #25, z, ne+ ccmp w1, #28, z, ne+ csel w0, wzr, w0, ne+ ;; size=24 bbWeight=0.50 PerfScore 1.50+G_M46525_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 88, prolog size 8, PerfScore 19.05, instruction count 22, allocated bytes for code 88 (MethodHash=0e634a42) for method System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool+; Total bytes of code 64, prolog size 8, PerfScore 13.65, instruction count 16, allocated bytes for code 64 (MethodHash=0e634a42) for method System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 3+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -72,9 +60,6 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 2- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-25.00%) : 20961.dasm - Microsoft.CodeAnalysis.CSharp.LanguageVersionExtensionsInternal:IsValid(int):bool
@@ -6,61 +6,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) int -> x0 single-def+; V00 arg0 [V00,T00] ( 5, 5 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M45553_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M45553_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M45553_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M45553_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w1, w0, #1
+ sub w2, w0, #0xD1FFAB1E+ mov w3, #0xD1FFAB1E+ mov w4, #1
cmp w1, #6
- bls G_M45553_IG04- ;; size=12 bbWeight=1 PerfScore 2.00-G_M45553_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- sub w1, w0, #0xD1FFAB1E- cmp w1, #2- bls G_M45553_IG04- cmp w0, #0xD1FFAB1E- bne G_M45553_IG06- ;; size=20 bbWeight=0.50 PerfScore 1.75-G_M45553_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M45553_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w2, #2, z, hi+ ccmp w0, w3, z, hi+ csel w0, wzr, w4, ne+ ;; size=32 bbWeight=1 PerfScore 4.00+G_M45553_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M45553_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M45553_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 64, prolog size 8, PerfScore 14.15, instruction count 16, allocated bytes for code 64 (MethodHash=a2564e0e) for method Microsoft.CodeAnalysis.CSharp.LanguageVersionExtensionsInternal:IsValid(int):bool+; Total bytes of code 48, prolog size 8, PerfScore 12.30, instruction count 12, allocated bytes for code 48 (MethodHash=a2564e0e) for method Microsoft.CodeAnalysis.CSharp.LanguageVersionExtensionsInternal:IsValid(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-25.00%) : 21112.dasm - Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool
@@ -6,61 +6,46 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M60755_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M60755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M60755_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M60755_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w1, #0xD1FFAB1E
add w1, w0, w1
+ movn w2, #0xD1FFAB1E+ add w0, w0, w2+ mov w2, #1
cmp w1, #1
- bls G_M60755_IG04- ;; size=16 bbWeight=1 PerfScore 2.50-G_M60755_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- movn w1, #0xD1FFAB1E- add w0, w0, w1- cmp w0, #2- bhi G_M60755_IG06- ;; size=16 bbWeight=0.50 PerfScore 1.25-G_M60755_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M60755_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #2, z, hi+ csel w0, wzr, w2, hi+ ;; size=32 bbWeight=1 PerfScore 4.00+G_M60755_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M60755_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M60755_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 64, prolog size 8, PerfScore 14.15, instruction count 16, allocated bytes for code 64 (MethodHash=781f12ac) for method Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool+; Total bytes of code 48, prolog size 8, PerfScore 12.30, instruction count 12, allocated bytes for code 48 (MethodHash=781f12ac) for method Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+20 (+0.33%) : 7651.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int)
@@ -26,7 +26,7 @@
; V16 tmp11 [V16,T52] ( 3, 0 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp"
; V17 tmp12 [V17,T25] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
; V18 tmp13 [V18,T12] ( 14, 56 ) int -> x0 "Inline stloc first use temp"
-; V19 tmp14 [V19,T09] ( 32, 82 ) int -> x24 "Inline stloc first use temp"+; V19 tmp14 [V19,T04] ( 32,100 ) int -> x24 "Inline stloc first use temp"
; V20 tmp15 [V20,T53] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
; V21 tmp16 [V21,T54] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
; V22 tmp17 [V22,T55] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
@@ -44,7 +44,7 @@
;* V34 tmp29 [V34,T31] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V35 tmp30 [V35,T26] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
; V36 tmp31 [V36,T13] ( 14, 56 ) int -> x0 "Inline stloc first use temp"
-; V37 tmp32 [V37,T10] ( 32, 82 ) int -> x26 "Inline stloc first use temp"+; V37 tmp32 [V37,T05] ( 32,100 ) int -> x26 "Inline stloc first use temp"
; V38 tmp33 [V38,T63] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
; V39 tmp34 [V39,T64] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
; V40 tmp35 [V40,T65] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
@@ -57,11 +57,11 @@
;* V47 tmp42 [V47,T32] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V48 tmp43 [V48,T22] ( 6, 20.50) int -> x25 "Inline stloc first use temp"
;* V49 tmp44 [V49,T33] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V50 tmp45 [V50,T02] ( 6,116 ) int -> x25 "Inline stloc first use temp"+; V50 tmp45 [V50,T06] ( 6,100 ) int -> x25 "Inline stloc first use temp"
;* V51 tmp46 [V51,T37] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V52 tmp47 [V52,T03] ( 6,116 ) int -> x25 "Inline stloc first use temp"+; V52 tmp47 [V52,T07] ( 6,100 ) int -> x25 "Inline stloc first use temp"
;* V53 tmp48 [V53,T38] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V54 tmp49 [V54,T08] ( 4,112 ) int -> x0 "Inline stloc first use temp"+; V54 tmp49 [V54,T03] ( 4,112 ) int -> x0 "Inline stloc first use temp"
; V55 tmp50 [V55,T18] ( 14, 28 ) int -> x0 "Inline stloc first use temp"
; V56 tmp51 [V56,T11] ( 32, 56 ) int -> x27 "Inline stloc first use temp"
; V57 tmp52 [V57,T71] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
@@ -72,22 +72,22 @@
; V62 tmp57 [V62,T76] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
; V63 tmp58 [V63,T77] ( 3, 0 ) ref -> x25 class-hnd exact "NewObj constructor temp"
; V64 tmp59 [V64,T78] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
-; V65 tmp60 [V65,T04] ( 6,120 ) int -> x25 "Inline stloc first use temp"+; V65 tmp60 [V65,T02] ( 6,152 ) int -> x25 "Inline stloc first use temp"
;* V66 tmp61 [V66,T27] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V67 tmp62 [V67,T05] ( 6,116 ) int -> x25 "Inline stloc first use temp"+; V67 tmp62 [V67,T08] ( 6,100 ) int -> x25 "Inline stloc first use temp"
;* V68 tmp63 [V68,T39] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V69 tmp64 [V69,T19] ( 8, 21 ) int -> x28 "Inline stloc first use temp"
; V70 tmp65 [V70,T79] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
;* V71 tmp66 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp"
; V72 tmp67 [V72,T23] ( 6, 20.50) int -> x28 "Inline stloc first use temp"
;* V73 tmp68 [V73,T34] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V74 tmp69 [V74,T06] ( 6,116 ) int -> x28 "Inline stloc first use temp"+; V74 tmp69 [V74,T09] ( 6,100 ) int -> x28 "Inline stloc first use temp"
;* V75 tmp70 [V75,T40] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
-; V76 tmp71 [V76,T07] ( 6,116 ) int -> x28 "Inline stloc first use temp"+; V76 tmp71 [V76,T10] ( 6,100 ) int -> x28 "Inline stloc first use temp"
;* V77 tmp72 [V77,T41] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
; V78 tmp73 [V78,T16] ( 4, 36.50) bool -> x23 "Inline stloc first use temp"
; V79 tmp74 [V79,T29] ( 3, 8.50) bool -> x24 "Inline stloc first use temp"
-; V80 tmp75 [V80,T14] ( 7, 52 ) int -> x0 "Inline stloc first use temp"+; V80 tmp75 [V80,T14] ( 7, 56 ) int -> x0 "Inline stloc first use temp"
; V81 tmp76 [V81,T24] ( 5, 20 ) int -> x0 "Inline stloc first use temp"
; V82 tmp77 [V82,T80] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp"
; V83 tmp78 [V83,T81] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp"
@@ -165,7 +165,7 @@ G_M57414_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
mov w23, w0
cmp w23, #117
- bne G_M57414_IG109+ bne G_M57414_IG77
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x22, #0x08]
@@ -173,7 +173,7 @@ G_M57414_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
mov w23, w0
cmp w23, #108
- bne G_M57414_IG110+ bne G_M57414_IG78
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x22, #0x08]
@@ -181,17 +181,17 @@ G_M57414_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x0]
mov w23, w0
cmp w23, #108
- bne G_M57414_IG111- b G_M57414_IG108+ bne G_M57414_IG79+ b G_M57414_IG76
;; size=84 bbWeight=0.50 PerfScore 13.25
G_M57414_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w20, #34
beq G_M57414_IG05
cmp w20, #123
- beq G_M57414_IG27+ beq G_M57414_IG19
cmp w20, #91
- beq G_M57414_IG86- b G_M57414_IG85+ beq G_M57414_IG59+ b G_M57414_IG58
;; size=28 bbWeight=0.50 PerfScore 2.75
G_M57414_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
@@ -202,9 +202,9 @@ G_M57414_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
cmn w0, #1
- beq G_M57414_IG112+ beq G_M57414_IG80
cmp w0, #34
- beq G_M57414_IG108+ beq G_M57414_IG76
cmp w0, #92
bne G_M57414_IG05
mov x0, x19
@@ -213,73 +213,95 @@ G_M57414_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
cmn w0, #1
- beq G_M57414_IG113+ beq G_M57414_IG81
cmp w0, #98
bgt G_M57414_IG09
cmp w0, #47
bgt G_M57414_IG07
+ mov w1, #47
cmp w0, #34
+ ccmp w0, w1, z, ne
beq G_M57414_IG05
- cmp w0, #47- beq G_M57414_IG05- ;; size=96 bbWeight=4 PerfScore 108.00+ ;; size=96 bbWeight=4 PerfScore 106.00
G_M57414_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M57414_IG12
;; size=4 bbWeight=2 PerfScore 2.00
G_M57414_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w1, #98
cmp w0, #92
+ ccmp w0, w1, z, ne
beq G_M57414_IG05
- cmp w0, #98- beq G_M57414_IG05- ;; size=16 bbWeight=4 PerfScore 12.00+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M57414_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M57414_IG12
;; size=4 bbWeight=2 PerfScore 2.00
G_M57414_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w0, #110
bgt G_M57414_IG11
+ mov w1, #110
cmp w0, #102
+ ccmp w0, w1, z, ne
beq G_M57414_IG05
- cmp w0, #110- beq G_M57414_IG05- ;; size=24 bbWeight=4 PerfScore 18.00+ ;; size=24 bbWeight=4 PerfScore 16.00
G_M57414_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M57414_IG12
;; size=4 bbWeight=2 PerfScore 2.00
G_M57414_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w1, #116
cmp w0, #114
+ ccmp w0, w1, z, ne
beq G_M57414_IG05
- cmp w0, #116- beq G_M57414_IG05- ;; size=16 bbWeight=4 PerfScore 12.00+ ;; size=16 bbWeight=4 PerfScore 10.00
G_M57414_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w0, #117
- bne G_M57414_IG114+ bne G_M57414_IG82
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x22, #0x08]
blr x1
; gcrRegs -[x0]
mov w24, w0
+ mov w0, #57
cmp w24, #48
- blt G_M57414_IG14- ;; size=32 bbWeight=4 PerfScore 32.00-G_M57414_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz- cmp w24, #57- ble G_M57414_IG16- ;; size=8 bbWeight=2 PerfScore 3.00-G_M57414_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ ccmp w24, w0, 0, ge+ cset x0, le+ mov w1, #70
cmp w24, #65
- blt G_M57414_IG15- cmp w24, #70- ble G_M57414_IG16- ;; size=16 bbWeight=2 PerfScore 6.00-G_M57414_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ ccmp w24, w1, 0, ge+ cset x1, le+ orr w0, w0, w1+ cbnz w0, G_M57414_IG14+ ;; size=64 bbWeight=4 PerfScore 48.00+G_M57414_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ mov w0, #102
cmp w24, #97
- blt G_M57414_IG115- cmp w24, #102- bgt G_M57414_IG115- ;; size=16 bbWeight=2 PerfScore 6.00+ ccmp w24, w0, 0, ge+ bgt G_M57414_IG83+ ;; size=16 bbWeight=2 PerfScore 5.00+G_M57414_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ mov x0, x19+ ; gcrRegs +[x0]+ ldr x1, [x22, #0x08]+ blr x1+ ; gcrRegs -[x0]+ mov w24, w0+ mov w0, #57+ cmp w24, #48+ ccmp w24, w0, 0, ge+ cset x0, le+ mov w1, #70+ cmp w24, #65+ ccmp w24, w1, 0, ge+ cset x1, le+ orr w0, w0, w1+ cbnz w0, G_M57414_IG16+ ;; size=56 bbWeight=4 PerfScore 42.00+G_M57414_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz+ mov w0, #102+ cmp w24, #97+ ccmp w24, w0, 0, ge+ bgt G_M57414_IG84+ ;; size=16 bbWeight=2 PerfScore 5.00
G_M57414_IG16: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -287,77 +309,47 @@ G_M57414_IG16: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
blr x1
; gcrRegs -[x0]
mov w24, w0
+ mov w0, #57
cmp w24, #48
- blt G_M57414_IG18- ;; size=24 bbWeight=4 PerfScore 26.00+ ccmp w24, w0, 0, ge+ cset x0, le
...
+16 (+2.76%) : 12117.dasm - ProtoBuf.ProtoWriter+State:WriteAny[int](int,int,int,ProtoBuf.Serializers.ISerializer`1[int]):this
@@ -21,19 +21,20 @@
; V11 tmp5 [V11,T15] ( 3, 1.50) ref -> x0 single-def
; V12 tmp6 [V12,T03] ( 3, 6 ) int -> x0 "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 tmp8 [V14,T09] ( 3, 3 ) int -> x24 "Inlining Arg"+; V14 tmp8 [V14,T09] ( 3, 3 ) int -> x25 "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T10] ( 3, 3 ) int -> x19 "Inlining Arg"
; V17 tmp11 [V17,T12] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V18 cse0 [V18,T07] ( 4, 3 ) long -> x24 "CSE - aggressive"
;
-; Lcl frame size = 0+; Lcl frame size = 8
G_M33833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!- stp x19, x20, [sp, #0x10]- stp x21, x22, [sp, #0x20]- stp x23, x24, [sp, #0x30]+ stp fp, lr, [sp, #-0x50]!+ stp x19, x20, [sp, #0x18]+ stp x21, x22, [sp, #0x28]+ stp x23, x24, [sp, #0x38]+ str x25, [sp, #0x48]
mov fp, sp
mov x21, x0
; byrRegs +[x21]
@@ -42,7 +43,7 @@ G_M33833_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov w23, w3
mov x20, x4
; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 7.00+ ;; size=44 bbWeight=1 PerfScore 8.00
G_M33833_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
cbnz x20, G_M33833_IG06
;; size=4 bbWeight=1 PerfScore 1.00
@@ -91,61 +92,26 @@ G_M33833_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
bgt G_M33833_IG08
;; size=72 bbWeight=1 PerfScore 12.50
G_M33833_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
- cbz w1, G_M33833_IG09+ cbz w1, G_M33833_IG11
cmp w1, #32
- bne G_M33833_IG17- b G_M33833_IG14+ bne G_M33833_IG16+ b G_M33833_IG13
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M33833_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
+ mov w0, #96
cmp w1, #64
- beq G_M33833_IG11- cmp w1, #96- beq G_M33833_IG11- b G_M33833_IG17- ;; size=20 bbWeight=0.50 PerfScore 2.00-G_M33833_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref- mov x1, x20- ; gcrRegs +[x1]- movz x0, #0xD1FFAB1E- movk x0, #0xD1FFAB1E LSL #16- movk x0, #0xD1FFAB1E LSL #32- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE- movk x2, #0xD1FFAB1E LSL #16- movk x2, #0xD1FFAB1E LSL #32- ldr x2, [x2]- blr x2- ; gcrRegs -[x1 x20] +[x0]- mov w4, w23- mov x1, x21- ; byrRegs +[x1]- mov w2, w22- mov w3, w19- add x11, x24, #8- ldr x5, [x11]- blr x5- ; gcrRegs -[x0]- ; byrRegs -[x1 x21]- ;; size=64 bbWeight=0.50 PerfScore 7.00-G_M33833_IG10: ; bbWeight=0.50, epilog, nogc, extend- ldp x23, x24, [sp, #0x30]- ldp x21, x22, [sp, #0x20]- ldp x19, x20, [sp, #0x10]- ldp fp, lr, [sp], #0x40- ret lr- ;; size=20 bbWeight=0.50 PerfScore 2.50-G_M33833_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref, isz- ; gcrRegs +[x20]- ; byrRegs +[x21]- mov w24, w19- tbnz w24, #4, G_M33833_IG12+ ccmp w1, w0, z, ne+ bne G_M33833_IG16+ mov w25, w19+ tbnz w25, #4, G_M33833_IG09
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- ;; size=28 bbWeight=0.50 PerfScore 3.50-G_M33833_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref- and w2, w24, #15+ ;; size=44 bbWeight=0.50 PerfScore 4.75+G_M33833_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref+ and w2, w25, #15
mov x0, x21
; byrRegs +[x0]
mov w1, w22
@@ -182,24 +148,58 @@ G_M33833_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000
; gcrRegs -[x0 x3 x20 x22]
; byrRegs -[x1 x21]
;; size=104 bbWeight=0.50 PerfScore 9.75
-G_M33833_IG13: ; bbWeight=0.50, epilog, nogc, extend- ldp x23, x24, [sp, #0x30]- ldp x21, x22, [sp, #0x20]- ldp x19, x20, [sp, #0x10]- ldp fp, lr, [sp], #0x40+G_M33833_IG10: ; bbWeight=0.50, epilog, nogc, extend+ ldr x25, [sp, #0x48]+ ldp x23, x24, [sp, #0x38]+ ldp x21, x22, [sp, #0x28]+ ldp x19, x20, [sp, #0x18]+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50-G_M33833_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref, isz+ ;; size=24 bbWeight=0.50 PerfScore 3.50+G_M33833_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref
; gcrRegs +[x20]
; byrRegs +[x21]
- tbnz w19, #4, G_M33833_IG15+ mov x1, x20+ ; gcrRegs +[x1]+ movz x0, #0xD1FFAB1E+ movk x0, #0xD1FFAB1E LSL #16+ movk x0, #0xD1FFAB1E LSL #32+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE+ movk x2, #0xD1FFAB1E LSL #16+ movk x2, #0xD1FFAB1E LSL #32+ ldr x2, [x2]+ blr x2+ ; gcrRegs -[x1 x20] +[x0]+ mov w4, w23+ mov x1, x21+ ; byrRegs +[x1]+ mov w2, w22+ mov w3, w19+ add x11, x24, #8+ ldr x5, [x11]+ blr x5+ ; gcrRegs -[x0]+ ; byrRegs -[x1 x21]+ ;; size=64 bbWeight=0.50 PerfScore 7.00+G_M33833_IG12: ; bbWeight=0.50, epilog, nogc, extend+ ldr x25, [sp, #0x48]+ ldp x23, x24, [sp, #0x38]+ ldp x21, x22, [sp, #0x28]+ ldp x19, x20, [sp, #0x18]+ ldp fp, lr, [sp], #0x50+ ret lr+ ;; size=24 bbWeight=0.50 PerfScore 3.50+G_M33833_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref, isz+ ; gcrRegs +[x20]+ ; byrRegs +[x21]+ tbnz w19, #4, G_M33833_IG14
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M33833_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref+G_M33833_IG14: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
and w2, w19, #15
mov x0, x21
; byrRegs +[x0]
@@ -221,14 +221,15 @@ G_M33833_IG15: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000
; gcrRegs -[x0 x20]
; byrRegs -[x1 x21]
;; size=56 bbWeight=0.50 PerfScore 6.50
-G_M33833_IG16: ; bbWeight=0.50, epilog, nogc, extend- ldp x23, x24, [sp, #0x30]- ldp x21, x22, [sp, #0x20]- ldp x19, x20, [sp, #0x10]- ldp fp, lr, [sp], #0x40+G_M33833_IG15: ; bbWeight=0.50, epilog, nogc, extend+ ldr x25, [sp, #0x48]+ ldp x23, x24, [sp, #0x38]+ ldp x21, x22, [sp, #0x28]+ ldp x19, x20, [sp, #0x18]+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50-G_M33833_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ ;; size=24 bbWeight=0.50 PerfScore 3.50+G_M33833_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w19
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -236,26 +237,27 @@ G_M33833_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x1]
blr x1
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M33833_IG18: ; bbWeight=0.50, epilog, nogc, extend- ldp x23, x24, [sp, #0x30]- ldp x21, x22, [sp, #0x20]- ldp x19, x20, [sp, #0x10]- ldp fp, lr, [sp], #0x40+G_M33833_IG17: ; bbWeight=0.50, epilog, nogc, extend+ ldr x25, [sp, #0x48]+ ldp x23, x24, [sp, #0x38]+ ldp x21, x22, [sp, #0x28]+ ldp x19, x20, [sp, #0x18]+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 2.50+ ;; size=24 bbWeight=0.50 PerfScore 3.50-; Total bytes of code 580, prolog size 20, PerfScore 132.75, instruction count 145, allocated bytes for code 580 (MethodHash=1e667bd6) for method ProtoBuf.ProtoWriter+State:WriteAny[int](int,int,int,ProtoBuf.Serializers.ISerializer`1[int]):this+; Total bytes of code 596, prolog size 24, PerfScore 138.60, instruction count 149, allocated bytes for code 596 (MethodHash=1e667bd6) for method ProtoBuf.ProtoWriter+State:WriteAny[int](int,int,int,ProtoBuf.Serializers.ISerializer`1[int]):this
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2+ Code Words : 3
Epilog Count : 4
E bit : 0
X bit : 0
Vers : 0
- Function Length : 145 (0x00091) Actual length = 580 (0x000244)+ Function Length : 149 (0x00095) Actual length = 596 (0x000254)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -272,10 +274,13 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 89 save_reg X#6 Z#9 (0x09); str x25, [sp, #72]
E6 save_next
E6 save_next
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!+ E4 end+ E4 end
...
+8 (+9.09%) : 4051.dasm - System.Globalization.Tests.StringSearch+<>c:b__14_0(ushort):bool:this
@@ -20,37 +20,37 @@ G_M31341_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M31341_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxth w0, w1
cmp w0, #32
- beq G_M31341_IG06+ beq G_M31341_IG05
;; size=12 bbWeight=1 PerfScore 2.00
G_M31341_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w1, #44
cmp w0, #46
- beq G_M31341_IG06- cmp w0, #44- beq G_M31341_IG06+ ccmp w0, w1, z, ne+ cset x1, eq+ mov w2, #122
cmp w0, #97
- blt G_M31341_IG04- cmp w0, #122- ble G_M31341_IG06- ;; size=32 bbWeight=0.50 PerfScore 3.00-G_M31341_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ ccmp w0, w2, 0, ge+ cset x2, le+ orr w1, w1, w2+ cbnz w1, G_M31341_IG05
cmp w0, #90
cset x1, le
cmp w0, #65
csel w0, wzr, w1, lt
- ;; size=16 bbWeight=0.50 PerfScore 1.00-G_M31341_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=56 bbWeight=0.50 PerfScore 3.75+G_M31341_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M31341_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M31341_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M31341_IG07: ; bbWeight=0.50, epilog, nogc, extend+G_M31341_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 88, prolog size 8, PerfScore 18.55, instruction count 22, allocated bytes for code 88 (MethodHash=4a768592) for method System.Globalization.Tests.StringSearch+<>c:<ContainsSimpleCharactersOnly>b__14_0(ushort):bool:this+; Total bytes of code 96, prolog size 8, PerfScore 19.10, instruction count 24, allocated bytes for code 96 (MethodHash=4a768592) for method System.Globalization.Tests.StringSearch+<>c:<ContainsSimpleCharactersOnly>b__14_0(ushort):bool:this
; ============================================================
Unwind Info:
@@ -61,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-16 (-28.57%) : 356691.dasm - System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this
@@ -8,61 +8,46 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
-; V01 loc0 [V01,T01] ( 4, 3 ) int -> x1 +; V01 loc0 [V01,T01] ( 4, 4 ) int -> x0 
;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M20099_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M20099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M20099_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+G_M20099_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldrb w0, [x0]
; byrRegs -[x0]
- and w1, w0, #15- cmp w1, #5- ble G_M20099_IG04- ;; size=16 bbWeight=1 PerfScore 5.00-G_M20099_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w1, #9- bne G_M20099_IG06- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M20099_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M20099_IG05: ; bbWeight=0.50, epilog, nogc, extend+ and w0, w0, #15+ uxtb w1, w0+ cmp w0, #5+ ccmp w0, #9, z, gt+ csel w0, w1, wzr, ne+ ;; size=24 bbWeight=1 PerfScore 5.50+G_M20099_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M20099_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- uxtb w0, w1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M20099_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 56, prolog size 8, PerfScore 15.35, instruction count 14, allocated bytes for code 56 (MethodHash=c9cfb17c) for method System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this+; Total bytes of code 40, prolog size 8, PerfScore 13.00, instruction count 10, allocated bytes for code 40 (MethodHash=c9cfb17c) for method System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-28.57%) : 364903.dasm - System.Reflection.Metadata.SignatureHeader:get_CallingConvention():ubyte:this
@@ -8,59 +8,46 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) byref -> x0 this single-def
-; V01 loc0 [V01,T01] ( 4, 3 ) int -> x1 +; V01 loc0 [V01,T01] ( 4, 4 ) int -> x0 
;# V02 OutArgs [V02 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M22474_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M22474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M22474_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+G_M22474_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldrb w0, [x0]
; byrRegs -[x0]
- and w1, w0, #15- cmp w1, #5- ble G_M22474_IG05- ;; size=16 bbWeight=1 PerfScore 5.00-G_M22474_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w1, #9- beq G_M22474_IG05- mov w0, wzr- ;; size=12 bbWeight=0.50 PerfScore 1.00-G_M22474_IG04: ; bbWeight=0.50, epilog, nogc, extend+ and w0, w0, #15+ uxtb w1, w0+ cmp w0, #5+ ccmp w0, #9, z, gt+ csel w0, w1, wzr, eq+ ;; size=24 bbWeight=1 PerfScore 5.50+G_M22474_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M22474_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- uxtb w0, w1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M22474_IG06: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 56, prolog size 8, PerfScore 15.35, instruction count 14, allocated bytes for code 56 (MethodHash=337ba835) for method System.Reflection.Metadata.SignatureHeader:get_CallingConvention():ubyte:this+; Total bytes of code 40, prolog size 8, PerfScore 13.00, instruction count 10, allocated bytes for code 40 (MethodHash=337ba835) for method System.Reflection.Metadata.SignatureHeader:get_CallingConvention():ubyte:this
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-24 (-27.27%) : 1236.dasm - System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
@@ -10,7 +10,7 @@
;
; V00 arg0 [V00,T01] ( 3, 3 ) ubyte -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
-; V02 cse0 [V02,T00] ( 6, 5.35) int -> x1 "CSE - aggressive"+; V02 cse0 [V02,T00] ( 6, 5.48) int -> x1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,54 +21,40 @@ G_M46525_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M46525_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb w1, w0
cmp w1, #14
- ble G_M46525_IG09+ ble G_M46525_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M46525_IG03: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w1, #22- beq G_M46525_IG05- cmp w1, #24- beq G_M46525_IG05- ;; size=16 bbWeight=0.87 PerfScore 2.61-G_M46525_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w1, #25- beq G_M46525_IG05- cmp w1, #28- bne G_M46525_IG07- ;; size=16 bbWeight=0.80 PerfScore 2.41-G_M46525_IG05: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M46525_IG03: ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- ;; size=4 bbWeight=0.55 PerfScore 0.28-G_M46525_IG06: ; bbWeight=0.55, epilog, nogc, extend+ cmp w1, #22+ ccmp w1, #24, z, ne+ ccmp w1, #25, z, ne+ ccmp w1, #28, z, ne+ csel w0, wzr, w0, ne+ ;; size=24 bbWeight=0.87 PerfScore 2.61+G_M46525_IG04: ; bbWeight=0.87, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.55 PerfScore 1.11-G_M46525_IG07: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.32 PerfScore 0.16-G_M46525_IG08: ; bbWeight=0.32, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.32 PerfScore 0.63-G_M46525_IG09: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ ;; size=8 bbWeight=0.87 PerfScore 1.74+G_M46525_IG05: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.13 PerfScore 0.06
-G_M46525_IG10: ; bbWeight=0.13, epilog, nogc, extend+G_M46525_IG06: ; bbWeight=0.13, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.13 PerfScore 0.26
-; Total bytes of code 88, prolog size 8, PerfScore 19.82, instruction count 22, allocated bytes for code 88 (MethodHash=0e634a42) for method System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool+; Total bytes of code 64, prolog size 8, PerfScore 14.58, instruction count 16, allocated bytes for code 64 (MethodHash=0e634a42) for method System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 3+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -76,9 +62,6 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 2- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+4 (+0.13%) : 517264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
@@ -948,11 +948,12 @@ G_M36121_IG33: ; bbWeight=0.50, gcrefRegs=780000 {x19 x20 x21 x22}, byref
;; size=340 bbWeight=0.50 PerfScore 58.50
G_M36121_IG34: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x21]
- cmn w23, #1- beq G_M36121_IG41+ movn w0, #0
cmp w25, w23
- ble G_M36121_IG41- cbnz w26, G_M36121_IG41+ ccmp w23, w0, z, gt+ cset x0, eq+ orr w0, w0, w26+ cbnz w0, G_M36121_IG41
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x27, #0x08]
@@ -974,7 +975,7 @@ G_M36121_IG34: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
stp xzr, xzr, [fp, #0x38]
str xzr, [fp, #0x48]
b G_M36121_IG36
- ;; size=84 bbWeight=0.50 PerfScore 11.00+ ;; size=88 bbWeight=0.50 PerfScore 10.75
G_M36121_IG35: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
ldr x0, [fp, #0xD1FFAB1E]	// [V122 tmp110]
@@ -1319,7 +1320,7 @@ G_M36121_IG47: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3116, prolog size 76, PerfScore 813.85, instruction count 779, allocated bytes for code 3116 (MethodHash=615872e6) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)+; Total bytes of code 3120, prolog size 76, PerfScore 814.00, instruction count 780, allocated bytes for code 3120 (MethodHash=615872e6) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
; ============================================================
Unwind Info:
@@ -1330,7 +1331,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 779 (0x0030b) Actual length = 3116 (0x000c2c)+ Function Length : 780 (0x0030c) Actual length = 3120 (0x000c30)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+8.33%) : 360681.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
@@ -24,39 +24,37 @@ G_M29165_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M29165_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, #90
- ble G_M29165_IG08+ ble G_M29165_IG06
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M29165_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w1, #122
cmp w0, #97
- blt G_M29165_IG05- cmp w0, #122- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, w1, 0, ge+ cset x1, le+ mov w2, #57+ mov w3, #95
cmp w0, #48
- blt G_M29165_IG06- cmp w0, #57- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #95- beq G_M29165_IG08+ ccmp w0, w2, 0, ge+ ccmp w0, w3, z, gt+ cset x2, eq+ orr w1, w1, w2+ cbnz w1, G_M29165_IG06
cmp w0, #45
cset x0, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25+ ;; size=56 bbWeight=0.50 PerfScore 3.75+G_M29165_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ldp fp, lr, [sp], #0x10+ ret lr+ ;; size=8 bbWeight=0.50 PerfScore 1.00+G_M29165_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ mov w0, #1+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M29165_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M29165_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M29165_IG09: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00-; Total bytes of code 96, prolog size 8, PerfScore 20.35, instruction count 24, allocated bytes for code 96 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool+; Total bytes of code 104, prolog size 8, PerfScore 20.65, instruction count 26, allocated bytes for code 104 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
; ============================================================
Unwind Info:
@@ -67,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+8.33%) : 586743.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
@@ -23,39 +23,37 @@ G_M29165_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M29165_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, #90
- ble G_M29165_IG08+ ble G_M29165_IG06
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M29165_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov w1, #122
cmp w0, #97
- blt G_M29165_IG05- cmp w0, #122- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, w1, 0, ge+ cset x1, le+ mov w2, #57+ mov w3, #95
cmp w0, #48
- blt G_M29165_IG06- cmp w0, #57- ble G_M29165_IG08- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M29165_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #95- beq G_M29165_IG08+ ccmp w0, w2, 0, ge+ ccmp w0, w3, z, gt+ cset x2, eq+ orr w1, w1, w2+ cbnz w1, G_M29165_IG06
cmp w0, #45
cset x0, eq
- ;; size=16 bbWeight=0.50 PerfScore 1.25+ ;; size=56 bbWeight=0.50 PerfScore 3.75+G_M29165_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ldp fp, lr, [sp], #0x10+ ret lr+ ;; size=8 bbWeight=0.50 PerfScore 1.00+G_M29165_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+ mov w0, #1+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M29165_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M29165_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M29165_IG09: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00-; Total bytes of code 96, prolog size 8, PerfScore 20.35, instruction count 24, allocated bytes for code 96 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool+; Total bytes of code 104, prolog size 8, PerfScore 20.65, instruction count 26, allocated bytes for code 104 (MethodHash=222d8e12) for method Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
; ============================================================
Unwind Info:
@@ -66,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.linux.arm64.checked.mch
-16 (-33.33%) : 122051.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
@@ -7,57 +7,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M56201_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M56201_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M56201_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M56201_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #4
- bls G_M56201_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M56201_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #9- bne G_M56201_IG06- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M56201_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M56201_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #9, z, hi+ csel w0, wzr, w1, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M56201_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M56201_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M56201_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 48, prolog size 8, PerfScore 11.05, instruction count 12, allocated bytes for code 48 (MethodHash=18a32476) for method Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=18a32476) for method Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-33.33%) : 123848.dasm - Microsoft.CodeAnalysis.Diagnostic:GetDefaultWarningLevel(int):int
@@ -7,55 +7,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M44118_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M44118_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M44118_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M44118_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #2
- beq G_M44118_IG05- ;; size=8 bbWeight=1 PerfScore 1.50-G_M44118_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #3- bne G_M44118_IG05- mov w0, wzr- ;; size=12 bbWeight=0.50 PerfScore 1.00-G_M44118_IG04: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #3, 0, ne+ csel w0, w1, wzr, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M44118_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M44118_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M44118_IG06: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 48, prolog size 8, PerfScore 11.05, instruction count 12, allocated bytes for code 48 (MethodHash=669853a9) for method Microsoft.CodeAnalysis.Diagnostic:GetDefaultWarningLevel(int):int+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=669853a9) for method Microsoft.CodeAnalysis.Diagnostic:GetDefaultWarningLevel(int):int
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-16 (-33.33%) : 124616.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:Is64BitIntegral(int):bool
@@ -7,57 +7,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 4, 4 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M18810_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG+G_M18810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M18810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+G_M18810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+ mov w1, #1
cmp w0, #7
- beq G_M18810_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M18810_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #15- bne G_M18810_IG06- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M18810_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref- mov w0, #1- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M18810_IG05: ; bbWeight=0.50, epilog, nogc, extend+ ccmp w0, #15, z, ne+ csel w0, wzr, w1, ne+ ;; size=16 bbWeight=1 PerfScore 2.00+G_M18810_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00-G_M18810_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref- mov w0, wzr- ;; size=4 bbWeight=0.50 PerfScore 0.25-G_M18810_IG07: ; bbWeight=0.50, epilog, nogc, extend- ldp fp, lr, [sp], #0x10- ret lr- ;; size=8 bbWeight=0.50 PerfScore 1.00+ ;; size=8 bbWeight=1 PerfScore 2.00-; Total bytes of code 48, prolog size 8, PerfScore 11.05, instruction count 12, allocated bytes for code 48 (MethodHash=1f3db685) for method Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:Is64BitIntegral(int):bool+; Total bytes of code 32, prolog size 8, PerfScore 8.70, instruction count 8, allocated bytes for code 32 (MethodHash=1f3db685) for method Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:Is64BitIntegral(int):bool
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)+ Function Length : 8 (0x00008) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+8 (+4.55%) : 143288.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
@@ -9,8 +9,8 @@
;
; V00 arg0 [V00,T02] ( 5, 4 ) ref -> x19 class-hnd single-def
; V01 loc0 [V01,T05] ( 2, 1 ) ref -> x19 class-hnd single-def
-; V02 loc1 [V02,T01] ( 5, 16.50) int -> x2 -; V03 loc2 [V03,T00] ( 7, 18 ) ushort -> x3 +; V02 loc1 [V02,T00] ( 5, 16.50) int -> x2 +; V03 loc2 [V03,T01] ( 7, 16 ) ushort -> x3 
;# V04 OutArgs [V04 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
; V05 cse0 [V05,T03] ( 4, 5.50) int -> x1 "CSE - aggressive"
; V06 cse1 [V06,T04] ( 2, 4.50) byref -> x0 "CSE - aggressive"
@@ -52,56 +52,52 @@ G_M10687_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[x19]
mov w2, wzr
cmp w1, #0
- ble G_M10687_IG12+ ble G_M10687_IG09
add x0, x19, #12
; byrRegs +[x0]
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M10687_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; gcrRegs -[x19]
ldrh w3, [x0, w2, UXTW #2]
+ mov w4, #57
cmp w3, #48
- blt G_M10687_IG09- ;; size=12 bbWeight=4 PerfScore 18.00-G_M10687_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz- cmp w3, #57- ble G_M10687_IG11- ;; size=8 bbWeight=2 PerfScore 3.00-G_M10687_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ cset x4, le+ mov w5, #102
cmp w3, #97
- blt G_M10687_IG10- cmp w3, #102- ble G_M10687_IG11- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w5, 0, ge+ cset x5, le+ orr w4, w4, w5+ cbnz w4, G_M10687_IG08+ mov w4, #70
cmp w3, #65
- blt G_M10687_IG14- cmp w3, #70- bgt G_M10687_IG14- ;; size=16 bbWeight=2 PerfScore 6.00-G_M10687_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz+ ccmp w3, w4, 0, ge+ bgt G_M10687_IG11+ ;; size=60 bbWeight=4 PerfScore 44.00+G_M10687_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1
cmp w1, w2
bgt G_M10687_IG07
;; size=12 bbWeight=4 PerfScore 8.00
-G_M10687_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref+G_M10687_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG13: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG10: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M10687_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M10687_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M10687_IG15: ; bbWeight=0.50, epilog, nogc, extend+G_M10687_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 176, prolog size 16, PerfScore 78.10, instruction count 44, allocated bytes for code 176 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool+; Total bytes of code 184, prolog size 16, PerfScore 89.90, instruction count 46, allocated bytes for code 184 (MethodHash=fe08d640) for method Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
; ============================================================
Unwind Info:
@@ -112,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+5.00%) : 162723.dasm - System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 18, 10.50) int -> x0 single-def+; V00 arg0 [V00,T00] ( 18, 12 ) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
; V02 tmp1 [V02,T01] ( 2, 2 ) int -> x1 "Single return block return value"
;
@@ -19,64 +19,56 @@ G_M23697_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=8 bbWeight=1 PerfScore 1.50
G_M23697_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, #0
- blt G_M23697_IG04- ;; size=8 bbWeight=1 PerfScore 1.50-G_M23697_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #14- ble G_M23697_IG10- ;; size=8 bbWeight=0.50 PerfScore 0.75-G_M23697_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, #14, 0, ge+ cset x1, le
cmp w0, #16
- blt G_M23697_IG05- cmp w0, #21- ble G_M23697_IG10- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M23697_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, #21, 0, ge+ cset x2, le+ orr w1, w1, w2+ cbnz w1, G_M23697_IG05+ ;; size=32 bbWeight=1 PerfScore 4.50+G_M23697_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ mov w1, #34
cmp w0, #32
- blt G_M23697_IG06- cmp w0, #34- ble G_M23697_IG10- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M23697_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, w1, 0, ge+ cset x1, le+ mov w2, #54
cmp w0, #50
- blt G_M23697_IG07- cmp w0, #54- ble G_M23697_IG10- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M23697_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz+ ccmp w0, w2, 0, ge+ cset x2, le+ orr w1, w1, w2+ cbnz w1, G_M23697_IG05+ mov w1, #71+ mov w2, #36+ mov w3, #48
cmp w0, #64
- blt G_M23697_IG08- cmp w0, #71- ble G_M23697_IG10- ;; size=16 bbWeight=0.50 PerfScore 1.50-G_M23697_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz- cmp w0, #36- beq G_M23697_IG10- cmp w0, #48- beq G_M23697_IG10+ ccmp w0, w1, 0, ge+ ccmp w0, w2, z, gt+ ccmp w0, w3, z, ne+ beq G_M23697_IG05+ mov w1, #61+ mov w2, #76
cmp w0, #60
- beq G_M23697_IG10- cmp w0, #61- beq G_M23697_IG10- cmp w0, #76- beq G_M23697_IG10+ ccmp w0, w1, z, ne+ ccmp w0, w2, z, ne+ beq G_M23697_IG05
cmp w0, #80
cset x1, eq
uxtb w0, w1
- ;; size=52 bbWeight=0.50 PerfScore 4.50-G_M23697_IG09: ; bbWeight=0.50, epilog, nogc, extend+ ;; size=108 bbWeight=0.50 PerfScore 7.50+G_M23697_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M23697_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref+G_M23697_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M23697_IG11: ; bbWeight=0.50, epilog, nogc, extend+G_M23697_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 160, prolog size 8, PerfScore 32.50, instruction count 40, allocated bytes for code 160 (MethodHash=6425a36e) for method System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool+; Total bytes of code 168, prolog size 8, PerfScore 32.55, instruction count 42, allocated bytes for code 168 (MethodHash=6425a36e) for method System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
; ============================================================
Unwind Info:
@@ -87,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+5.71%) : 18473.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
@@ -31,11 +31,13 @@ G_M41419_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, #102
cmp w19, #97
ccmp w19, w0, 0, ge
- ble G_M41419_IG05- mov w0, #70+ cset x0, le+ mov w1, #70
cmp w19, #65
- ccmp w19, w0, 0, ge- ble G_M41419_IG05+ ccmp w19, w1, 0, ge+ cset x1, le+ orr w0, w0, w1+ cbnz w0, G_M41419_IG05
mov w0, #0xD1FFAB1E
mov w1, #0xD1FFAB1E
cmp w19, w0
@@ -46,7 +48,7 @@ G_M41419_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp w19, w0
ccmp w19, w1, 0, ge
cset x0, le
- ;; size=72 bbWeight=0.50 PerfScore 5.25+ ;; size=80 bbWeight=0.50 PerfScore 5.50
G_M41419_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -61,7 +63,7 @@ G_M41419_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 140, prolog size 12, PerfScore 33.00, instruction count 35, allocated bytes for code 140 (MethodHash=707e5e34) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool+; Total bytes of code 148, prolog size 12, PerfScore 34.05, instruction count 37, allocated bytes for code 148 (MethodHash=707e5e34) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
; ============================================================
Unwind Info:
@@ -72,7 +74,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details

Improvements/regressions per collection

CollectionContexts with diffsImprovementsRegressionsSame sizeImprovements (bytes)Regressions (bytes)
libraries_tests.pmi.linux.arm64.checked.mch4,3814,12812241-27,152+84
libraries.pmi.linux.arm64.checked.mch4,2113,27420917-28,464+140
benchmarks.run.linux.arm64.checked.mch8136395169-6,496+76
coreclr_tests.run.linux.arm64.checked.mch9,7969,5493244-71,908+20
libraries.crossgen2.linux.arm64.checked.mch2,9622,10313846-14,284+96
22,16319,693532,417-148,304+416

Context information

CollectionDiffed contextsMinOptsFullOptsMissed, baseMissed, diff
libraries_tests.pmi.linux.arm64.checked.mch373,8008,227365,5730 (0.00%)0 (0.00%)
libraries.pmi.linux.arm64.checked.mch260,0424,778255,2640 (0.00%)0 (0.00%)
benchmarks.run.linux.arm64.checked.mch40,9146,34634,5681 (0.00%)1 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch629,013382,523246,49085 (0.01%)87 (0.01%)
libraries.crossgen2.linux.arm64.checked.mch193,06014193,0460 (0.00%)0 (0.00%)
1,496,829401,8881,094,94186 (0.01%)88 (0.01%)

jit-analyze output

libraries_tests.pmi.linux.arm64.checked.mch

To reproduce these diffs on Windows arm64:

superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch arm64

Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162440896 (overridden on cmd)
Total bytes of diff: 162413828 (overridden on cmd)
Total bytes of delta: -27068 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
8 : 211623.dasm (0.38 % of base)
8 : 168783.dasm (0.93 % of base)
8 : 110651.dasm (2.44 % of base)
8 : 249111.dasm (0.28 % of base)
8 : 164088.dasm (0.63 % of base)
8 : 231893.dasm (4.76 % of base)
8 : 257937.dasm (0.34 % of base)
8 : 110654.dasm (0.33 % of base)
8 : 258579.dasm (0.32 % of base)
4 : 315718.dasm (1.14 % of base)
4 : 168670.dasm (0.41 % of base)
4 : 315758.dasm (1.14 % of base)
Top file improvements (bytes):
-180 : 258460.dasm (-1.99 % of base)
-144 : 258362.dasm (-5.96 % of base)
-136 : 259643.dasm (-4.86 % of base)
-128 : 51947.dasm (-1.31 % of base)
-112 : 148829.dasm (-1.69 % of base)
-96 : 210802.dasm (-4.14 % of base)
-96 : 250068.dasm (-8.79 % of base)
-96 : 307120.dasm (-1.32 % of base)
-92 : 211862.dasm (-2.93 % of base)
-72 : 51932.dasm (-1.44 % of base)
-72 : 361093.dasm (-3.17 % of base)
-72 : 211670.dasm (-1.17 % of base)
-72 : 68246.dasm (-3.18 % of base)
-68 : 325058.dasm (-1.53 % of base)
-64 : 51936.dasm (-0.63 % of base)
-64 : 259788.dasm (-0.96 % of base)
-60 : 257394.dasm (-19.74 % of base)
-60 : 52244.dasm (-0.54 % of base)
-60 : 164335.dasm (-1.25 % of base)
-60 : 325062.dasm (-2.09 % of base)
63 total files with Code Size differences (51 improved, 12 regressed), 28 unchanged.
Top method regressions (bytes):
8 (0.28 % of base) : 249111.dasm - ImTools.ImMapTree`1[System.__Canon]:AddOrKeepLeftOrRight(int,System.__Canon):ImTools.ImMapTree`1[System.__Canon]:this
8 (0.34 % of base) : 257937.dasm - Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars.CSharpVirtualCharService:TryConvertStringToVirtualChars(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.String,bool):Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.VirtualCharSequence
8 (0.32 % of base) : 258579.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.CompilationUnitSyntaxExtensions:AddUsingDirectives(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax]):System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax]
8 (2.44 % of base) : 110651.dasm - Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:IsLegalBraceEscape(System.String,int,int,byref):bool
8 (0.33 % of base) : 110654.dasm - Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:TryConvertSimpleDoubleQuoteString(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.String,bool):Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.VirtualCharSequence
8 (0.38 % of base) : 211623.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.CompilationUnitSyntaxExtensions:AddImportsStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]):System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]
8 (0.63 % of base) : 164088.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.DoNotPrefixEnumValuesWithTypeNameAnalyzer:AnalyzeNamedType(Microsoft.CodeAnalysis.Diagnostics.SymbolAnalysisContext)
8 (4.76 % of base) : 231893.dasm - NuGet.Packaging.Signing.DerEncoding.DerEncoder:IsPrintableStringCharacter(ushort):bool
8 (0.93 % of base) : 168783.dasm - System.Text.Encodings.Web.Tests.UrlEncoderTests:UrlEncode_AllRangesAllowed_StillEncodesForbiddenChars():this
4 (1.14 % of base) : 315718.dasm - Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int32TestMultiplications>b__32_1(int,int):System.Object[]:this
4 (1.14 % of base) : 315758.dasm - Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int64TestMultiplications>b__92_1(long,long):System.Object[]:this
4 (0.41 % of base) : 168670.dasm - System.Text.Encodings.Web.Tests.HtmlEncoderTests:HtmlEncode_AllRangesAllowed_StillEncodesForbiddenChars_Extended():this
Top method improvements (bytes):
-180 (-1.99 % of base) : 258460.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.SpacingFormattingRule:GetAdjustSpacesOperation(byref,byref,byref):Microsoft.CodeAnalysis.Formatting.Rules.AdjustSpacesOperation:this
-144 (-5.96 % of base) : 258362.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.FormattingHelpers:IsParenInArgumentList(Microsoft.CodeAnalysis.SyntaxToken):bool
-136 (-4.86 % of base) : 259643.dasm - Microsoft.CodeAnalysis.CSharp.Classification.ClassificationHelpers:GetSyntacticClassificationForIdentifier(Microsoft.CodeAnalysis.SyntaxToken):System.String
-128 (-1.31 % of base) : 51947.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:SkipTest()
-112 (-1.69 % of base) : 148829.dasm - System.Xml.XmlConvertTests.ToTypeTests:ToType57():int:this
-96 (-8.79 % of base) : 250068.dasm - FastExpressionCompiler.LightExpression.TypeTools:IsImplicitlyNumericConvertibleTo(System.Type,System.Type):bool
-96 (-4.14 % of base) : 210802.dasm - Microsoft.CodeAnalysis.VisualBasic.Classification.ClassificationHelpers:GetSyntacticClassificationForIdentifier(Microsoft.CodeAnalysis.SyntaxToken):System.String
-96 (-1.32 % of base) : 307120.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:GetSemanticTargetForGeneration(Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,System.Threading.CancellationToken):System.Object
-92 (-2.93 % of base) : 211862.dasm - Microsoft.CodeAnalysis.VisualBasic.Formatting.FormattingHelpers:IsXmlToken(Microsoft.CodeAnalysis.SyntaxToken):bool
-72 (-1.17 % of base) : 211670.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery.SyntaxTreeExtensions:IsTypeContext(Microsoft.CodeAnalysis.SyntaxTree,int,Microsoft.CodeAnalysis.SyntaxToken,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SemanticModel):bool
-72 (-3.17 % of base) : 361093.dasm - Microsoft.Interop.GeneratorDiagnostics:ReportMarshallingNotSupported(Microsoft.Interop.MethodSignatureDiagnosticLocations,Microsoft.Interop.TypePositionInfo,System.String,System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]):this
-72 (-3.18 % of base) : 68246.dasm - Microsoft.Interop.GeneratorDiagnostics:ReportMarshallingNotSupported(Microsoft.Interop.MethodSignatureDiagnosticLocations,Microsoft.Interop.TypePositionInfo,System.String):this
-72 (-1.44 % of base) : 51932.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:CurrentDepthArrayTest()
-68 (-1.53 % of base) : 325058.dasm - System.Globalization.Tests.GregorianCalendarGetWeekOfYears+<GetWeekOfYear_TestData>d__6:MoveNext():bool:this
-64 (-0.96 % of base) : 259788.dasm - Microsoft.CodeAnalysis.CSharp.CSharpTypeInferenceService+TypeInferrer:InferTypesWorker_DoNotCallDirectly(Microsoft.CodeAnalysis.SyntaxNode):System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.LanguageService.TypeInferenceInfo]:this
-64 (-0.63 % of base) : 51936.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TrySkipHelper(System.String,ubyte,System.Collections.Generic.List`1[ubyte],ubyte)
-60 (-19.74 % of base) : 257394.dasm - Microsoft.CodeAnalysis.CSharp.Utilities.FormattingRangeHelper:IsSpecialContainingNode(Microsoft.CodeAnalysis.SyntaxNode):bool
-60 (-1.25 % of base) : 164335.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.OperatorOverloadsHaveNamedAlternatesAnalyzer:AnalyzeSymbol(Microsoft.CodeAnalysis.Diagnostics.SymbolAnalysisContext)
-60 (-2.09 % of base) : 325062.dasm - System.Globalization.Tests.GregorianCalendarGetYear+<GetYear_TestData>d__0:MoveNext():bool:this
-60 (-0.54 % of base) : 52244.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteHelloWorldEscaped(bool,bool):this
Top method regressions (percentages):
8 (4.76 % of base) : 231893.dasm - NuGet.Packaging.Signing.DerEncoding.DerEncoder:IsPrintableStringCharacter(ushort):bool
8 (2.44 % of base) : 110651.dasm - Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:IsLegalBraceEscape(System.String,int,int,byref):bool
4 (1.14 % of base) : 315718.dasm - Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int32TestMultiplications>b__32_1(int,int):System.Object[]:this
4 (1.14 % of base) : 315758.dasm - Microsoft.CSharp.RuntimeBinder.Tests.IntegerBinaryOperationTests+<>c:<get_Int64TestMultiplications>b__92_1(long,long):System.Object[]:this
8 (0.93 % of base) : 168783.dasm - System.Text.Encodings.Web.Tests.UrlEncoderTests:UrlEncode_AllRangesAllowed_StillEncodesForbiddenChars():this
8 (0.63 % of base) : 164088.dasm - Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.DoNotPrefixEnumValuesWithTypeNameAnalyzer:AnalyzeNamedType(Microsoft.CodeAnalysis.Diagnostics.SymbolAnalysisContext)
4 (0.41 % of base) : 168670.dasm - System.Text.Encodings.Web.Tests.HtmlEncoderTests:HtmlEncode_AllRangesAllowed_StillEncodesForbiddenChars_Extended():this
8 (0.38 % of base) : 211623.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.CompilationUnitSyntaxExtensions:AddImportsStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]):System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]
8 (0.34 % of base) : 257937.dasm - Microsoft.CodeAnalysis.CSharp.EmbeddedLanguages.VirtualChars.CSharpVirtualCharService:TryConvertStringToVirtualChars(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.String,bool):Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.VirtualCharSequence
8 (0.33 % of base) : 110654.dasm - Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.AbstractVirtualCharService:TryConvertSimpleDoubleQuoteString(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.String,bool):Microsoft.CodeAnalysis.EmbeddedLanguages.VirtualChars.VirtualCharSequence
8 (0.32 % of base) : 258579.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.CompilationUnitSyntaxExtensions:AddUsingDirectives(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax]):System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax]
8 (0.28 % of base) : 249111.dasm - ImTools.ImMapTree`1[System.__Canon]:AddOrKeepLeftOrRight(int,System.__Canon):ImTools.ImMapTree`1[System.__Canon]:this
Top method improvements (percentages):
-20 (-35.71 % of base) : 73785.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13d.usage13d.Parent:Foo(int,int,int):int:this
-20 (-35.71 % of base) : 199251.dasm - System.Runtime.InteropServices.Tests.LibObjC:SupportedOnPlatform(int):bool
-16 (-33.33 % of base) : 73841.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage03d.usage03d.Parent:Foo(int,int):int:this
-16 (-33.33 % of base) : 72805.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.inheritance.inherit21c.inherit21c.Parent:Foo(int,int):int:this
-16 (-33.33 % of base) : 72787.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.inheritance.multi03c.multi03c.Derived:Foo(int,int):int:this
-16 (-33.33 % of base) : 72380.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms07c.prms07c.Parent:Foo(int,int,System.Object[]):int:this
-16 (-33.33 % of base) : 72363.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09c.prms09c.Parent:Foo(int,int,System.Object[]):int:this
-20 (-33.33 % of base) : 212876.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.ExpressionGenerator+StringPiece:IsPrintable(int):bool
-16 (-33.33 % of base) : 217994.dasm - NuGet.Protocol.Plugins.MessageDispatcher:GetIsKeepAlive(NuGet.Protocol.Plugins.IConnection,int,int):bool
-16 (-33.33 % of base) : 107909.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
-20 (-29.41 % of base) : 202324.dasm - Microsoft.Diagnostics.Runtime.ClrElementTypeExtensions:IsObjectReference(int):bool
-16 (-28.57 % of base) : 204490.dasm - Microsoft.IdentityModel.Json.Utilities.JsonTokenUtils:IsPrimitiveToken(int):bool
-12 (-27.27 % of base) : 160316.dasm - Analyzer.Utilities.DisposeAnalysisKindExtensions:AreMayBeNotDisposedViolationsEnabled(int):bool
-12 (-27.27 % of base) : 113705.dasm - Microsoft.CodeAnalysis.Text.SourceHashAlgorithms:IsSupportedAlgorithm(int):bool
-16 (-26.67 % of base) : 160527.dasm - Analyzer.Utilities.FlowAnalysis.Analysis.TaintedDataAnalysis.HardcodedSymmetricAlgorithmKeysSources:IsLegalKeySize(int):bool
-20 (-26.32 % of base) : 160411.dasm - Analyzer.Utilities.FlowAnalysis.Analysis.PropertySetAnalysis.PropertySetAnalysis:MergeHazardousUsageEvaluationResult(int,int):int
-12 (-25.00 % of base) : 282204.dasm - Microsoft.Interop.ManualTypeMarshallingHelper:ModeUsesManagedToUnmanagedShape(int):bool
-12 (-23.08 % of base) : 146587.dasm - System.Xml.XPath.XDocument.Tests.XDocument.NavigatorComparer:IsWhitespaceOrText(int):bool
-28 (-22.58 % of base) : 277760.dasm - System.Text.RegularExpressions.RegexNode:<ReduceConcatenationWithAdjacentLoops>g__CanCombineCounts|51_0(int,int,int,int):bool
-16 (-22.22 % of base) : 195784.dasm - System.ComponentModel.Tests.IBaseConverter:CanConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Type):bool:this

libraries.pmi.linux.arm64.checked.mch

To reproduce these diffs on Windows arm64:

superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch arm64

Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 66031816 (overridden on cmd)
Total bytes of diff: 66003492 (overridden on cmd)
Total bytes of delta: -28324 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
8 : 202551.dasm (0.35 % of base)
8 : 257569.dasm (3.77 % of base)
8 : 81550.dasm (2.63 % of base)
8 : 255102.dasm (0.94 % of base)
8 : 29442.dasm (1.85 % of base)
8 : 179103.dasm (5.71 % of base)
8 : 148531.dasm (5.00 % of base)
8 : 22868.dasm (0.50 % of base)
8 : 191794.dasm (8.33 % of base)
8 : 16760.dasm (0.35 % of base)
8 : 27644.dasm (5.41 % of base)
8 : 16710.dasm (1.14 % of base)
8 : 250117.dasm (2.17 % of base)
8 : 218007.dasm (5.71 % of base)
8 : 255116.dasm (0.27 % of base)
4 : 191748.dasm (0.34 % of base)
4 : 73391.dasm (1.33 % of base)
4 : 27624.dasm (4.17 % of base)
4 : 80313.dasm (0.12 % of base)
4 : 115479.dasm (0.17 % of base)
Top file improvements (bytes):
-136 : 196936.dasm (-0.47 % of base)
-120 : 71049.dasm (-9.65 % of base)
-104 : 37018.dasm (-15.66 % of base)
-104 : 37021.dasm (-15.66 % of base)
-104 : 149643.dasm (-12.21 % of base)
-100 : 37040.dasm (-15.43 % of base)
-100 : 37037.dasm (-15.43 % of base)
-88 : 196938.dasm (-2.14 % of base)
-84 : 22953.dasm (-6.40 % of base)
-84 : 23093.dasm (-7.64 % of base)
-80 : 37016.dasm (-11.43 % of base)
-80 : 37017.dasm (-11.43 % of base)
-76 : 37036.dasm (-11.11 % of base)
-76 : 37035.dasm (-11.11 % of base)
-72 : 27538.dasm (-6.59 % of base)
-68 : 71872.dasm (-4.82 % of base)
-68 : 69253.dasm (-4.83 % of base)
-68 : 71840.dasm (-4.82 % of base)
-64 : 2651.dasm (-1.08 % of base)
-60 : 22915.dasm (-5.10 % of base)
71 total files with Code Size differences (51 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
8 (0.35 % of base) : 202551.dasm - Internal.IL.ILStackHelper:ComputeMaxStack(Internal.IL.MethodIL):int
8 (8.33 % of base) : 191794.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
8 (2.63 % of base) : 81550.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNames:TryParseGeneratedName(System.String,byref,byref,byref):bool
8 (5.71 % of base) : 179103.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (5.71 % of base) : 218007.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (1.85 % of base) : 29442.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaUtilities:GetCollectionRangeVariables(Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax]
8 (0.35 % of base) : 16760.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseExternalChecksumDirective(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.PunctuationSyntax):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExternalChecksumDirectiveTriviaSyntax:this
8 (1.14 % of base) : 16710.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.PropertyBlockContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this
8 (0.50 % of base) : 22868.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax:get_AsClauseInternal():Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax:this
8 (5.41 % of base) : 27644.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
8 (5.00 % of base) : 148531.dasm - System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
8 (0.94 % of base) : 255102.dasm - System.Formats.Tar.TarReader:TryProcessGnuMetadataHeader(System.Formats.Tar.TarHeader,bool,byref):bool:this
8 (0.27 % of base) : 255116.dasm - System.Formats.Tar.TarReader+<TryProcessGnuMetadataHeaderAsync>d__19:MoveNext():this
8 (2.17 % of base) : 250117.dasm - System.Net.WebSockets.ManagedWebSocket:TryValidateUtf8(System.Span`1[ubyte],bool,System.Net.WebSockets.ManagedWebSocket+Utf8MessageState):bool
8 (3.77 % of base) : 257569.dasm - System.Security.Cryptography.Cose.KnownCoseAlgorithms:ThrowIfNotSupported(long)
4 (0.34 % of base) : 191748.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(bool,System.String,byref):System.String
4 (0.12 % of base) : 80313.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
4 (1.33 % of base) : 73391.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AdvanceIfMatches(ushort):bool:this
4 (4.17 % of base) : 27624.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsWhitespaceNotAscii(ushort):bool
4 (0.17 % of base) : 115479.dasm - System.Xml.DtdParser+<ScanEntity2Async>d__189:MoveNext():this
Top method improvements (bytes):
-136 (-0.47 % of base) : 196936.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
-120 (-9.65 % of base) : 71049.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ForEachStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ForEachStatementSyntax:this
-104 (-15.66 % of base) : 37018.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int
-104 (-15.66 % of base) : 37021.dasm - System.SpanHelpers:IndexOfAny[long](byref,long,long,long,int):int
-104 (-12.21 % of base) : 149643.dasm - System.Text.Json.JsonReaderHelper:IndexOfOrLessThan(byref,ubyte,ubyte,ubyte,int):int
-100 (-15.43 % of base) : 37037.dasm - System.SpanHelpers:LastIndexOfAny[int](byref,int,int,int,int):int
-100 (-15.43 % of base) : 37040.dasm - System.SpanHelpers:LastIndexOfAny[long](byref,long,long,long,int):int
-88 (-2.14 % of base) : 196938.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],bool,int,int,System.Object[]):int:this
-84 (-6.40 % of base) : 22953.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax:Update(ushort,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax):Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax:this
-84 (-7.64 % of base) : 23093.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax):Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax:this
-80 (-11.43 % of base) : 37017.dasm - System.SpanHelpers:IndexOfAny[short](byref,short,short,short,int):int
-80 (-11.43 % of base) : 37016.dasm - System.SpanHelpers:IndexOfAny[ubyte](byref,ubyte,ubyte,ubyte,int):int
-76 (-11.11 % of base) : 37036.dasm - System.SpanHelpers:LastIndexOfAny[short](byref,short,short,short,int):int
-76 (-11.11 % of base) : 37035.dasm - System.SpanHelpers:LastIndexOfAny[ubyte](byref,ubyte,ubyte,ubyte,int):int
-72 (-6.59 % of base) : 27538.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
-68 (-4.82 % of base) : 71872.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.ConversionOperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.ConversionOperatorDeclarationSyntax:this
-68 (-4.83 % of base) : 69253.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax:this
-68 (-4.82 % of base) : 71840.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax:Update(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.BlockSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax:this
-64 (-1.08 % of base) : 2651.dasm - System.Data.DataSet:ReadXml(System.Xml.XmlReader,int,bool):int:this
-60 (-5.10 % of base) : 22915.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax:Update(ushort,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax):Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax:this
Top method regressions (percentages):
8 (8.33 % of base) : 191794.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
8 (5.71 % of base) : 179103.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (5.71 % of base) : 218007.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (5.41 % of base) : 27644.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
8 (5.00 % of base) : 148531.dasm - System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
4 (4.17 % of base) : 27624.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsWhitespaceNotAscii(ushort):bool
8 (3.77 % of base) : 257569.dasm - System.Security.Cryptography.Cose.KnownCoseAlgorithms:ThrowIfNotSupported(long)
8 (2.63 % of base) : 81550.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNames:TryParseGeneratedName(System.String,byref,byref,byref):bool
8 (2.17 % of base) : 250117.dasm - System.Net.WebSockets.ManagedWebSocket:TryValidateUtf8(System.Span`1[ubyte],bool,System.Net.WebSockets.ManagedWebSocket+Utf8MessageState):bool
8 (1.85 % of base) : 29442.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaUtilities:GetCollectionRangeVariables(Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax]
4 (1.33 % of base) : 73391.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AdvanceIfMatches(ushort):bool:this
8 (1.14 % of base) : 16710.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.PropertyBlockContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this
8 (0.94 % of base) : 255102.dasm - System.Formats.Tar.TarReader:TryProcessGnuMetadataHeader(System.Formats.Tar.TarHeader,bool,byref):bool:this
8 (0.50 % of base) : 22868.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax:get_AsClauseInternal():Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax:this
8 (0.35 % of base) : 16760.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseExternalChecksumDirective(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.PunctuationSyntax):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExternalChecksumDirectiveTriviaSyntax:this
8 (0.35 % of base) : 202551.dasm - Internal.IL.ILStackHelper:ComputeMaxStack(Internal.IL.MethodIL):int
4 (0.34 % of base) : 191748.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(bool,System.String,byref):System.String
8 (0.27 % of base) : 255116.dasm - System.Formats.Tar.TarReader+<TryProcessGnuMetadataHeaderAsync>d__19:MoveNext():this
4 (0.17 % of base) : 115479.dasm - System.Xml.DtdParser+<ScanEntity2Async>d__189:MoveNext():this
4 (0.12 % of base) : 80313.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (percentages):
-20 (-38.46 % of base) : 86103.dasm - ILCompiler.DependencyAnalysis.Relocation:GetFileRelocationType(int):int
-20 (-33.33 % of base) : 153610.dasm - ILCompiler.Reflection.ReadyToRun.StringBuilderExtensions:NeedsEscaping(int):bool
-20 (-33.33 % of base) : 62230.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:IsValidExtensionMethodThisArgConversion(Microsoft.CodeAnalysis.CSharp.Conversion):bool
-16 (-33.33 % of base) : 216666.dasm - Microsoft.CodeAnalysis.Diagnostic:GetDefaultWarningLevel(int):int
-16 (-33.33 % of base) : 179072.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:Is64BitIntegral(int):bool
-16 (-33.33 % of base) : 179075.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:IsFloatingPoint(int):bool
-16 (-33.33 % of base) : 177244.dasm - Microsoft.CodeAnalysis.UnicodeCharacterUtilities:IsCombiningChar(int):bool
-16 (-33.33 % of base) : 214438.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
-16 (-33.33 % of base) : 44064.dasm - System.Reflection.Emit.ExceptionHandler:IsValidKind(int):bool
-16 (-33.33 % of base) : 164071.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:IsCompleteChain(Interop+Crypto+X509VerifyStatusCode):bool
-16 (-30.77 % of base) : 82899.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:IsFloat(int):bool
-16 (-30.77 % of base) : 62510.dasm - Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:get_IsValid():bool:this
-16 (-30.77 % of base) : 231677.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedTypeFacts:IsNumericType(uint):bool
-20 (-29.41 % of base) : 4027.dasm - System.Data.ExpressionNode:IsUnsignedSql(int):bool
-20 (-29.41 % of base) : 4153.dasm - System.Data.Operators:IsArithmetical(int):bool
-20 (-29.41 % of base) : 4154.dasm - System.Data.Operators:IsLogical(int):bool
-20 (-29.41 % of base) : 166037.dasm - System.Xml.XmlDictionaryReader:IsTextNode(int):bool:this
-16 (-28.57 % of base) : 66122.dasm - Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool
-16 (-28.57 % of base) : 139591.dasm - Newtonsoft.Json.Utilities.JsonTokenUtils:IsPrimitiveToken(int):bool
-16 (-28.57 % of base) : 146920.dasm - System.Reflection.Metadata.SignatureHeader:get_CallingConvention():ubyte:this

benchmarks.run.linux.arm64.checked.mch

To reproduce these diffs on Windows arm64:

superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch arm64

Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 18839792 (overridden on cmd)
Total bytes of diff: 18833372 (overridden on cmd)
Total bytes of delta: -6420 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
28 : 28312.dasm (0.25 % of base)
20 : 7651.dasm (0.33 % of base)
16 : 12117.dasm (2.76 % of base)
8 : 4051.dasm (9.09 % of base)
4 : 24030.dasm (0.13 % of base)
Top file improvements (bytes):
-120 : 25962.dasm (-1.47 % of base)
-112 : 7465.dasm (-0.30 % of base)
-104 : 23643.dasm (-15.95 % of base)
-104 : 2281.dasm (-12.21 % of base)
-96 : 21111.dasm (-6.00 % of base)
-88 : 16596.dasm (-1.14 % of base)
-88 : 7655.dasm (-1.09 % of base)
-88 : 39803.dasm (-0.82 % of base)
-88 : 16590.dasm (-0.90 % of base)
-84 : 24957.dasm (-0.87 % of base)
-80 : 20070.dasm (-1.84 % of base)
-80 : 19994.dasm (-1.31 % of base)
-60 : 7656.dasm (-0.58 % of base)
-60 : 28316.dasm (-0.58 % of base)
-60 : 19641.dasm (-5.19 % of base)
-56 : 15284.dasm (-1.18 % of base)
-56 : 1212.dasm (-0.96 % of base)
-52 : 23130.dasm (-9.77 % of base)
-48 : 28315.dasm (-0.42 % of base)
-48 : 23376.dasm (-9.23 % of base)
53 total files with Code Size differences (48 improved, 5 regressed), 34 unchanged.
Top method regressions (bytes):
28 (0.25 % of base) : 28312.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int)
20 (0.33 % of base) : 7651.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int)
16 (2.76 % of base) : 12117.dasm - ProtoBuf.ProtoWriter+State:WriteAny[int](int,int,int,ProtoBuf.Serializers.ISerializer`1[int]):this
8 (9.09 % of base) : 4051.dasm - System.Globalization.Tests.StringSearch+<>c:<ContainsSimpleCharactersOnly>b__14_0(ushort):bool:this
4 (0.13 % of base) : 24030.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (bytes):
-120 (-1.47 % of base) : 25962.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.Location
-112 (-0.30 % of base) : 7465.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int)
-104 (-15.95 % of base) : 23643.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int
-104 (-12.21 % of base) : 2281.dasm - System.Text.Json.JsonReaderHelper:IndexOfOrLessThan(byref,ubyte,ubyte,ubyte,int):int
-96 (-6.00 % of base) : 21111.dasm - Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsWarning(int):bool
-88 (-0.82 % of base) : 39803.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives
-88 (-0.90 % of base) : 16590.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.CollectionsOfPrimitives
-88 (-1.14 % of base) : 16596.dasm - Jil.Deserialize.Methods:_ReadISO8601Date(System.IO.TextReader,ushort[]):System.DateTime
-88 (-1.09 % of base) : 7655.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffset(System.IO.TextReader,ushort[]):System.DateTimeOffset
-84 (-0.87 % of base) : 24957.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location
-80 (-1.31 % of base) : 19994.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel
-80 (-1.84 % of base) : 20070.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.LoginViewModel
-60 (-0.58 % of base) : 7656.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime
-60 (-0.58 % of base) : 28316.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime
-60 (-5.19 % of base) : 19641.dasm - System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):bool
-56 (-0.96 % of base) : 1212.dasm - System.Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo)
-56 (-1.18 % of base) : 15284.dasm - Utf8Json.Formatters.ISO8601DateTimeFormatter:Deserialize(byref,Utf8Json.IJsonFormatterResolver):System.DateTime:this
-52 (-9.77 % of base) : 23130.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int):int
-48 (-0.42 % of base) : 28315.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset
-48 (-9.23 % of base) : 23376.dasm - System.SpanHelpers:LastIndexOfAny[int](byref,int,int,int):int
Top method regressions (percentages):
8 (9.09 % of base) : 4051.dasm - System.Globalization.Tests.StringSearch+<>c:<ContainsSimpleCharactersOnly>b__14_0(ushort):bool:this
16 (2.76 % of base) : 12117.dasm - ProtoBuf.ProtoWriter+State:WriteAny[int](int,int,int,ProtoBuf.Serializers.ISerializer`1[int]):this
20 (0.33 % of base) : 7651.dasm - Jil.Deserialize.Methods:SkipWithLeadChar(System.IO.TextReader,int)
28 (0.25 % of base) : 28312.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int)
4 (0.13 % of base) : 24030.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (percentages):
-24 (-27.27 % of base) : 1131.dasm - System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
-16 (-25.00 % of base) : 21112.dasm - Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool
-16 (-25.00 % of base) : 20961.dasm - Microsoft.CodeAnalysis.CSharp.LanguageVersionExtensionsInternal:IsValid(int):bool
-16 (-25.00 % of base) : 1721.dasm - System.Reflection.Emit.OpCodes:TakesSingleByteArgument(System.Reflection.Emit.OpCode):bool
-16 (-23.53 % of base) : 22152.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_IsReferenceType():bool:this
-16 (-22.22 % of base) : 21383.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int
-16 (-20.00 % of base) : 20465.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleMemberName():bool:this
-16 (-19.05 % of base) : 3735.dasm - Newtonsoft.Json.Linq.JValue:GetStringValueType(System.Nullable`1[int]):int
-16 (-19.05 % of base) : 5608.dasm - System.UriHelper:IsLWS(ushort):bool
-20 (-17.24 % of base) : 16757.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):bool
-104 (-15.95 % of base) : 23643.dasm - System.SpanHelpers:IndexOfAny[int](byref,int,int,int,int):int
-20 (-14.71 % of base) : 6849.dasm - System.Text.RegularExpressions.RegexCharClass:IsWordChar(ushort):bool
-8 (-13.33 % of base) : 91.dasm - System.RuntimeType:HasElementTypeImpl():bool:this
-12 (-13.04 % of base) : 22276.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsVararg():bool:this
-16 (-12.90 % of base) : 21984.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:IsComparison(int):bool
-104 (-12.21 % of base) : 2281.dasm - System.Text.Json.JsonReaderHelper:IndexOfOrLessThan(byref,ubyte,ubyte,ubyte,int):int
-32 (-11.76 % of base) : 15790.dasm - MessagePack.Internal.DynamicObjectTypeBuilder:IsOptimizeTargetType(System.Type):bool
-44 (-11.34 % of base) : 7054.dasm - Jil.Common.ExtensionMethods:IsPrimitiveType(System.Type):bool
-12 (-11.11 % of base) : 22192.dasm - Microsoft.CodeAnalysis.CodeGen.ILOpCodeExtensions:CanFallThrough(ushort):bool
-12 (-11.11 % of base) : 14701.dasm - ProtoBuf.Internal.Serializers.SubValueSerializer`1[System.DateTimeOffset]:ProtoBuf.Internal.Serializers.IDirectWriteNode.CanEmitDirectWrite(int):bool:this

coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows arm64:

superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch arm64

Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 536166368 (overridden on cmd)
Total bytes of diff: 536094480 (overridden on cmd)
Total bytes of delta: -71888 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
8 : 586743.dasm (8.33 % of base)
8 : 360681.dasm (8.33 % of base)
4 : 517264.dasm (0.13 % of base)
Top file improvements (bytes):
-132 : 580766.dasm (-1.44 % of base)
-88 : 511444.dasm (-23.16 % of base)
-88 : 511458.dasm (-23.16 % of base)
-88 : 511443.dasm (-23.16 % of base)
-88 : 511457.dasm (-23.16 % of base)
-88 : 511512.dasm (-23.16 % of base)
-80 : 511648.dasm (-2.63 % of base)
-80 : 511646.dasm (-2.61 % of base)
-80 : 511644.dasm (-2.60 % of base)
-80 : 511645.dasm (-2.59 % of base)
-72 : 587876.dasm (-6.69 % of base)
-64 : 362844.dasm (-1.00 % of base)
-64 : 552429.dasm (-11.68 % of base)
-60 : 511469.dasm (-19.48 % of base)
-60 : 511431.dasm (-19.48 % of base)
-60 : 511430.dasm (-19.48 % of base)
-60 : 511468.dasm (-19.48 % of base)
-60 : 511527.dasm (-19.48 % of base)
-60 : 526444.dasm (-0.63 % of base)
-56 : 5381.dasm (-0.95 % of base)
44 total files with Code Size differences (41 improved, 3 regressed), 35 unchanged.
Top method regressions (bytes):
8 (8.33 % of base) : 586743.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
8 (8.33 % of base) : 360681.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
4 (0.13 % of base) : 517264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (bytes):
-132 (-1.44 % of base) : 580766.dasm - structinreg.Program3:Main1():int
-88 (-23.16 % of base) : 511443.dasm - bgt_i4._bgt:main():int
-88 (-23.16 % of base) : 511444.dasm - bgt_i8._bgt:main():int
-88 (-23.16 % of base) : 511457.dasm - ble_i4._ble:main():int
-88 (-23.16 % of base) : 511458.dasm - ble_i8._ble:main():int
-88 (-23.16 % of base) : 511512.dasm - cgt_i4._cgt:main():int
-80 (-2.60 % of base) : 511644.dasm - ldarg_s_i1:test_int8(byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte,byte):int
-80 (-2.59 % of base) : 511645.dasm - ldarg_s_i2:test_int16(short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short,short):int
-80 (-2.61 % of base) : 511646.dasm - ldarg_s_i4:test_int32(int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int):int
-80 (-2.63 % of base) : 511648.dasm - ldarg_s_i8:test_int64(long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long,long):int
-72 (-6.69 % of base) : 587876.dasm - TestSmallStackArgsClass:TestSmallStackArgsMethod(short,short,short,short,short,short,short,short,short,short,short,short):int:this
-64 (-11.68 % of base) : 552429.dasm - ABIStress.TypeExtensions:IsOurStructType(System.Type):bool
-64 (-1.00 % of base) : 362844.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[]
-60 (-19.48 % of base) : 511430.dasm - bge_i4._bge:main():int
-60 (-19.48 % of base) : 511431.dasm - bge_i8._bge:main():int
-60 (-19.48 % of base) : 511468.dasm - blt_i4._blt:main():int
-60 (-19.48 % of base) : 511469.dasm - blt_i8._blt:main():int
-60 (-19.48 % of base) : 511527.dasm - clt_i4._clt:main():int
-60 (-0.63 % of base) : 526444.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,bool,byref,bool):bool:this
-56 (-0.95 % of base) : 5381.dasm - System.Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo)
Top method regressions (percentages):
8 (8.33 % of base) : 586743.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
8 (8.33 % of base) : 360681.dasm - Microsoft.Build.Shared.XmlUtilities:IsValidSubsequentElementNameCharacter(ushort):bool
4 (0.13 % of base) : 517264.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (percentages):
-16 (-28.57 % of base) : 364903.dasm - System.Reflection.Metadata.SignatureHeader:get_CallingConvention():ubyte:this
-16 (-28.57 % of base) : 356691.dasm - System.Reflection.Metadata.SignatureHeader:get_Kind():ubyte:this
-24 (-27.27 % of base) : 1236.dasm - System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
-16 (-25.00 % of base) : 237766.dasm - System.Reflection.Emit.OpCodes:TakesSingleByteArgument(System.Reflection.Emit.OpCode):bool
-16 (-25.00 % of base) : 628658.dasm - System.RuntimeTypeHandle:HasElementType(System.RuntimeType):bool
-16 (-25.00 % of base) : 429238.dasm - System.RuntimeTypeHandle:HasElementType(System.RuntimeType):bool
-16 (-25.00 % of base) : 297616.dasm - System.RuntimeTypeHandle:HasElementType(System.RuntimeType):bool
-16 (-23.53 % of base) : 516198.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_IsReferenceType():bool:this
-88 (-23.16 % of base) : 511443.dasm - bgt_i4._bgt:main():int
-88 (-23.16 % of base) : 511444.dasm - bgt_i8._bgt:main():int
-88 (-23.16 % of base) : 511457.dasm - ble_i4._ble:main():int
-88 (-23.16 % of base) : 511458.dasm - ble_i8._ble:main():int
-88 (-23.16 % of base) : 511512.dasm - cgt_i4._cgt:main():int
-16 (-22.22 % of base) : 515506.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int
-20 (-21.74 % of base) : 363620.dasm - System.Threading.Tasks.Parallel:CheckTimeoutReached(int):bool
-24 (-20.69 % of base) : 524951.dasm - N.C:HasPrimeUnderTwenty(int,int):bool
-16 (-20.00 % of base) : 514564.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleMemberName():bool:this
-60 (-19.48 % of base) : 511430.dasm - bge_i4._bge:main():int
-60 (-19.48 % of base) : 511431.dasm - bge_i8._bge:main():int
-60 (-19.48 % of base) : 511468.dasm - blt_i4._blt:main():int

libraries.crossgen2.linux.arm64.checked.mch

To reproduce these diffs on Windows arm64:

superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch arm64

Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 46085472 (overridden on cmd)
Total bytes of diff: 46071284 (overridden on cmd)
Total bytes of delta: -14188 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs

Top file regressions (bytes):
12 : 46310.dasm (4.35 % of base)
8 : 187886.dasm (4.08 % of base)
8 : 186551.dasm (2.06 % of base)
8 : 143288.dasm (4.55 % of base)
8 : 162723.dasm (5.00 % of base)
8 : 95766.dasm (2.56 % of base)
8 : 124935.dasm (4.55 % of base)
8 : 113313.dasm (0.47 % of base)
8 : 18473.dasm (5.71 % of base)
8 : 113503.dasm (0.78 % of base)
4 : 94535.dasm (0.26 % of base)
4 : 18453.dasm (4.35 % of base)
4 : 89486.dasm (1.39 % of base)
Top file improvements (bytes):
-104 : 155031.dasm (-12.21 % of base)
-92 : 117181.dasm (-2.38 % of base)
-80 : 116479.dasm (-0.29 % of base)
-60 : 46158.dasm (-5.23 % of base)
-60 : 177280.dasm (-0.61 % of base)
-56 : 44954.dasm (-1.87 % of base)
-52 : 41950.dasm (-4.48 % of base)
-48 : 89215.dasm (-11.11 % of base)
-44 : 5569.dasm (-1.89 % of base)
-44 : 44604.dasm (-0.87 % of base)
-40 : 180141.dasm (-0.86 % of base)
-40 : 79997.dasm (-4.95 % of base)
-36 : 177163.dasm (-1.41 % of base)
-36 : 44840.dasm (-3.14 % of base)
-36 : 117189.dasm (-3.72 % of base)
-32 : 41832.dasm (-7.27 % of base)
-32 : 28590.dasm (-2.29 % of base)
-32 : 117549.dasm (-1.91 % of base)
-32 : 180957.dasm (-1.68 % of base)
-32 : 175513.dasm (-6.25 % of base)
62 total files with Code Size differences (49 improved, 13 regressed), 27 unchanged.
Top method regressions (bytes):
12 (4.35 % of base) : 46310.dasm - System.Globalization.IdnMapping:ValidateStd3(ushort,bool)
8 (2.56 % of base) : 95766.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNames:TryParseGeneratedName(System.String,byref,byref,byref):bool
8 (4.55 % of base) : 143288.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (4.55 % of base) : 124935.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (5.71 % of base) : 18473.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
8 (5.00 % of base) : 162723.dasm - System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
8 (0.78 % of base) : 113503.dasm - System.Formats.Tar.TarReader:TryProcessGnuMetadataHeader(System.Formats.Tar.TarHeader,bool,byref):bool:this
8 (0.47 % of base) : 113313.dasm - System.Formats.Tar.TarReader+<TryProcessGnuMetadataHeaderAsync>d__19:MoveNext():this
8 (2.06 % of base) : 186551.dasm - System.Net.WebSockets.ManagedWebSocket:TryValidateUtf8(System.Span`1[ubyte],bool,System.Net.WebSockets.ManagedWebSocket+Utf8MessageState):bool
8 (4.08 % of base) : 187886.dasm - System.Security.Cryptography.Cose.KnownCoseAlgorithms:ThrowIfNotSupported(long)
4 (0.26 % of base) : 94535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
4 (1.39 % of base) : 89486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AdvanceIfMatches(ushort):bool:this
4 (4.35 % of base) : 18453.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsWhitespaceNotAscii(ushort):bool
Top method improvements (bytes):
-104 (-12.21 % of base) : 155031.dasm - System.Text.Json.JsonReaderHelper:IndexOfOrLessThan(byref,ubyte,ubyte,ubyte,int):int
-92 (-2.38 % of base) : 117181.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],bool,int,int,System.Object[]):int:this
-80 (-0.29 % of base) : 116479.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this
-60 (-0.61 % of base) : 177280.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,bool,byref,bool):bool:this
-60 (-5.23 % of base) : 46158.dasm - System.DateTimeParse:TryParseFormatO(System.ReadOnlySpan`1[ushort],byref):bool
-56 (-1.87 % of base) : 44954.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard(System.TimeSpan,int,System.String,System.Span`1[ushort],byref):bool
-52 (-4.48 % of base) : 41950.dasm - System.Buffers.Text.Utf8Parser:TryParseDateTimeOffsetO(System.ReadOnlySpan`1[ubyte],byref,byref,byref):bool
-48 (-11.11 % of base) : 89215.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanTypeArgumentList(bool):int:this
-44 (-1.89 % of base) : 5569.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.DiagnosticBag):this
-44 (-0.87 % of base) : 44604.dasm - System.Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo)
-40 (-4.95 % of base) : 79997.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetEnumOperations(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this
-40 (-0.86 % of base) : 180141.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo)
-36 (-1.41 % of base) : 177163.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
-36 (-3.72 % of base) : 117189.dasm - Microsoft.VisualBasic.Conversion:HexOrOctValue(System.String,int):double
-36 (-3.14 % of base) : 44840.dasm - System.TimeZoneInfo:TransitionTimeToDateTime(int,System.TimeZoneInfo+TransitionTime):System.DateTime
-32 (-1.91 % of base) : 117549.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],bool,System.Type,byref,byref,Microsoft.VisualBasic.CompilerServices.Symbols+Container):System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method]
-32 (-2.29 % of base) : 28590.dasm - System.Convert:TryFromBase64Chars(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):bool
-32 (-6.25 % of base) : 175513.dasm - System.Drawing.Imaging.BitmapData:set_PixelFormat(int):this
-32 (-7.27 % of base) : 41832.dasm - System.Globalization.GregorianCalendarHelper:IsLeapDay(int,int,int,int):bool:this
-32 (-1.68 % of base) : 180957.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,bool)
Top method regressions (percentages):
8 (5.71 % of base) : 18473.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsHexDigit(ushort):bool
8 (5.00 % of base) : 162723.dasm - System.DirectoryServices.Protocols.Utility:IsResultCode(int):bool
8 (4.55 % of base) : 143288.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
8 (4.55 % of base) : 124935.dasm - Microsoft.CodeAnalysis.StrongNameKeys:IsValidPublicKeyString(System.String):bool
4 (4.35 % of base) : 18453.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsWhitespaceNotAscii(ushort):bool
12 (4.35 % of base) : 46310.dasm - System.Globalization.IdnMapping:ValidateStd3(ushort,bool)
8 (4.08 % of base) : 187886.dasm - System.Security.Cryptography.Cose.KnownCoseAlgorithms:ThrowIfNotSupported(long)
8 (2.56 % of base) : 95766.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedNames:TryParseGeneratedName(System.String,byref,byref,byref):bool
8 (2.06 % of base) : 186551.dasm - System.Net.WebSockets.ManagedWebSocket:TryValidateUtf8(System.Span`1[ubyte],bool,System.Net.WebSockets.ManagedWebSocket+Utf8MessageState):bool
4 (1.39 % of base) : 89486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AdvanceIfMatches(ushort):bool:this
8 (0.78 % of base) : 113503.dasm - System.Formats.Tar.TarReader:TryProcessGnuMetadataHeader(System.Formats.Tar.TarHeader,bool,byref):bool:this
8 (0.47 % of base) : 113313.dasm - System.Formats.Tar.TarReader+<TryProcessGnuMetadataHeaderAsync>d__19:MoveNext():this
4 (0.26 % of base) : 94535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
Top method improvements (percentages):
-20 (-33.33 % of base) : 167777.dasm - ILCompiler.Reflection.ReadyToRun.StringBuilderExtensions:NeedsEscaping(int):bool
-20 (-33.33 % of base) : 79890.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:IsValidExtensionMethodThisArgConversion(Microsoft.CodeAnalysis.CSharp.Conversion):bool
-16 (-33.33 % of base) : 123848.dasm - Microsoft.CodeAnalysis.Diagnostic:GetDefaultWarningLevel(int):int
-16 (-33.33 % of base) : 124616.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:Is64BitIntegral(int):bool
-16 (-33.33 % of base) : 143260.dasm - Microsoft.CodeAnalysis.PrimitiveTypeCodeExtensions:IsFloatingPoint(int):bool
-16 (-33.33 % of base) : 141808.dasm - Microsoft.CodeAnalysis.UnicodeCharacterUtilities:IsCombiningChar(int):bool
-16 (-33.33 % of base) : 122051.dasm - Roslyn.Utilities.UnicodeCharacterUtilities:IsLetterChar(int):bool
-16 (-33.33 % of base) : 166250.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor:IsCompleteChain(Interop+Crypto+X509VerifyStatusCode):bool
-16 (-30.77 % of base) : 97096.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:IsFloat(int):bool
-16 (-30.77 % of base) : 80155.dasm - Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:get_IsValid():bool:this
-20 (-29.41 % of base) : 157854.dasm - System.Xml.XmlDictionaryReader:IsTextNode(int):bool:this
-16 (-28.57 % of base) : 83710.dasm - Microsoft.CodeAnalysis.CSharp.ErrorFacts:IsHidden(int):bool
-16 (-28.57 % of base) : 169250.dasm - Newtonsoft.Json.Utilities.JsonTokenUtils:IsPrimitiveToken(int):bool
-16 (-28.57 % of base) : 76192.dasm - System.Xml.XmlDocument:IsTextNode(int):bool
-12 (-27.27 % of base) : 126817.dasm - Microsoft.CodeAnalysis.Text.SourceHashAlgorithms:IsSupportedAlgorithm(int):bool
-24 (-27.27 % of base) : 45295.dasm - System.Reflection.Emit.SignatureHelper:IsSimpleType(ubyte):bool
-16 (-26.67 % of base) : 160423.dasm - System.Xml.XmlBufferReader:IsAttrChar(int):bool
-16 (-26.67 % of base) : 78400.dasm - System.Xml.Xsl.XPath.XPathParser`1[int]:IsReverseAxis(int):bool
-16 (-26.67 % of base) : 78100.dasm - System.Xml.Xsl.XPath.XPathParser`1[System.__Canon]:IsReverseAxis(int):bool
-20 (-26.32 % of base) : 183026.dasm - System.Runtime.Serialization.CodeExporter:IsValid(ushort):bool

@a74nh

Copy link
Copy Markdown
ContributorAuthor

There are now a bunch of X86 failures, but the logs indicate a failure in azure to download? Either way, this patch doesn't touch anything X86

@jakobbotsch

Copy link
Copy Markdown
Member

/azp run runtime-coreclr superpmi-diffs, runtime-coreclr superpmi-replay

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 2 pipeline(s).

@jakobbotsch

Copy link
Copy Markdown
Member

Sorry @a74nh, I think you got caught up in a JIT-EE GUID update. I will rerun the CI legs to get the final diffs, but I don't expect to see any problems. Diffs look great now.

@jakobbotsch

Copy link
Copy Markdown
Member

Thanks again @a74nh!

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.

5 participants

@a74nh@jakobbotsch@AndyAyersMS@tannergooding@BruceForstall