Assembly Diffs

linux arm64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,093,044 -8
coreclr_tests.run.linux.arm64.checked.mch 508,732,332 -452
libraries_tests.run.linux.arm64.Release.mch 395,710,340 -428

FullOpts (-888 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 54,158,260 -8
coreclr_tests.run.linux.arm64.checked.mch 160,584,180 -452
libraries_tests.run.linux.arm64.Release.mch 180,578,388 -428

Example diffs

benchmarks.run_pgo.linux.arm64.checked.mch

-12 (-1.39%) : 97288.dasm - Microsoft.CodeAnalysis.PEModule+d__80:MoveNext():ubyte:this (Tier1)

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3492
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3492
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 12.41) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80>
+; V00 this [V00,T00] ( 17, 12.41) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80>
; V01 loc0 [V01,T20] ( 4, 2 ) ubyte -> x1 ; V02 loc1 [V02,T12] ( 3, 3.00) int -> x1 single-def ; V03 loc2 [V03,T09] ( 6, 5.41) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection> ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle>
-; V06 loc5 [V06 ] ( 12, 10.34) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
+; V06 loc5 [V06 ] ( 12, 10.34) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.PEModule+TypeDefToNamespace> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.NamespaceDefinitionHandle> @@ -24,11 +24,11 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 8.81) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 8.81) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition> ; V17 tmp10 [V17,T14] ( 3, 2.94) int -> x1 "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 2.94) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 2.94) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 11.75) byref -> x1 "impAppendStmt" ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,8 +48,8 @@ ; V36 tmp29 [V36,T23] ( 2, 2.00) int -> x2 "Inline stloc first use temp" ; V37 tmp30 [V37,T21] ( 3, 2.00) int -> x1 "Inline return value spill temp" ;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.00) byref -> x23 "Inlining Arg" -; V40 tmp33 [V40,T08] ( 5, 6.00) int -> x24 "Inlining Arg"
+; V39 tmp32 [V39,T07] ( 5, 6.00) byref -> x22 "Inlining Arg" +; V40 tmp33 [V40,T08] ( 5, 6.00) int -> x23 "Inlining Arg"
; V41 tmp34 [V41,T13] ( 3, 3.00) int -> x1 "Inline stloc first use temp" ;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" @@ -61,18 +61,18 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 11.76) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 11.76) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55 ] ( 6, 3.94) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP -; V56 tmp49 [V56 ] ( 7, 6.41) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP -; V57 tmp50 [V57,T24] ( 2, 2.00) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V55 tmp48 [V55 ] ( 6, 3.94) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP +; V56 tmp49 [V56 ] ( 7, 6.41) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP +; V57 tmp50 [V57,T24] ( 2, 2.00) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T25] ( 2, 2.00) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP ;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 3.94) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP -; V63 tmp56 [V63,T16] ( 2, 2.94) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 3.94) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP +; V63 tmp56 [V63,T16] ( 2, 2.94) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T18] ( 2, 2.94) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP ;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP ;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP @@ -85,21 +85,21 @@ ; V73 tmp66 [V73,T27] ( 2, 2.00) int -> x1 "field V46._value (fldOffset=0x0)" P-INDEP ;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP ; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP
-; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V77 cse0 [V77,T10] ( 3, 4.41) int -> x1 "CSE - aggressive"
+; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V77 cse0 [V77,T10] ( 3, 4.41) int -> x2 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M34558_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40] - stp x23, x24, [sp, #0x50]
+ stp x19, x20, [sp, #0x38] + stp x21, x22, [sp, #0x48] + str x23, [sp, #0x58]
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V06 loc5], [V06 loc5+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
add x1, sp, #96
- str x1, [fp, #0x28] // [V76 PSPSym] - str x0, [fp, #0x10] // [V00 this]
+ str x1, [fp, #0x30] // [V76 PSPSym] + str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00} ;; size=36 bbWeight=1 PerfScore 8.00 G_M34558_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz @@ -107,121 +107,124 @@ G_M34558_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000 ldr w1, [x0, #0x10] ldr x19, [x0, #0x08] ; gcrRegs +[x19]
- cbz w1, G_M34558_IG13
+ cbz w1, G_M34558_IG11
;; size=12 bbWeight=1 PerfScore 7.00 G_M34558_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz cmp w1, #1
- bne G_M34558_IG05
+ bne G_M34558_IG14
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M34558_IG04: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref movn w1, #2 str w1, [x0, #0x10]
- b G_M34558_IG15 - ;; size=12 bbWeight=1.00 PerfScore 2.50 -G_M34558_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov w1, wzr - b G_M34558_IG25 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M34558_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M34558_IG07: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19 x22] - mov x0, x22 - ; gcrRegs +[x0] - mov w1, w21 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ; gcr arg pop 0 - sxtw w1, w0 - b G_M34558_IG19 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M34558_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - add x0, fp, #24 // [V06 loc5] - movz x1, #0xD1FFAB1E // code for System.Reflection.Metadata.TypeDefinition:GetProjectedFlags():int:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - sxtw w22, w0 - ldr x0, [fp, #0x10] // [V00 this] - ; gcrRegs +[x0] - b G_M34558_IG14 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M34558_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs -[x19] - ; byrRegs +[x23] - mov w1, w24 - add x1, x1, #2 - ldrsw x2, [x23, #0x08] - cmp x1, x2 - bhi G_M34558_IG10 - ldr x1, [x23] - sxtw x2, w24 - ldrh w1, [x1, x2] - b G_M34558_IG22 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M34558_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - ; byrRegs -[x23] - movz x1, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M34558_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E // code for System.Reflection.Throw:ReferenceOverflow() - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M34558_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x1, [fp, #0x18] // [V55 tmp48]
+ ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M34558_IG05: ; bbWeight=1.47, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + add x1, x0, #36 + ; byrRegs +[x1] + ldp w3, w2, [x1] + cmp w2, w3 + bge G_M34558_IG12 + add w2, w2, #1 + str w2, [x1, #0x04] + ldr w1, [x0, #0x28] + ; byrRegs -[x1] + and w20, w1, #0xD1FFAB1E + ldr x1, [x19, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M34558_IG13 + ;; size=40 bbWeight=1.47 PerfScore 20.58 +G_M34558_IG06: ; bbWeight=1.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0-x1] + ldrb w1, [x19, #0x64] + cbnz w1, G_M34558_IG17 + ldr x21, [x19, #0x18] + ; gcrRegs +[x21] + ldr w1, [x21, #0x50] + cbnz w1, G_M34558_IG15 + sxtw w1, w20 + ;; size=24 bbWeight=1.47 PerfScore 16.89 +G_M34558_IG07: ; bbWeight=1.47, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str x21, [fp, #0x20] // [V55 tmp48] + str w1, [fp, #0x28] // [V56 tmp49] + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + ldrb w1, [x0, #0x18] + cbz w1, G_M34558_IG09 + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M34558_IG16 + ldr x1, [fp, #0x20] // [V55 tmp48]
; gcrRegs +[x1]
- ldrsb wzr, [x1] - ldr x1, [fp, #0x18] // [V55 tmp48]
add x1, x1, #0xD1FFAB1E ; gcrRegs -[x1] ; byrRegs +[x1]
- ldr w2, [fp, #0x20] // [V56 tmp49]
+ ldr w2, [fp, #0x28] // [V56 tmp49]
and w2, w2, #0xD1FFAB1E
- mov x0, x1 - ; byrRegs +[x0] - mov w1, w2
+ sub w2, w2, #1 + ldr w3, [x1, #0x20]
...

+0 (0.00%) : 81501.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCoreSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1101
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1101
; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -55,20 +55,31 @@ G_M61143_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x20] ;; size=44 bbWeight=1 PerfScore 9.00 G_M61143_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M61143_IG08
+ cbnz x20, G_M61143_IG09
;; size=4 bbWeight=1 PerfScore 1.00 G_M61143_IG03: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] ldr x0, [x19, #0x38] ldr x1, [x0, #0x08] cmp x1, #24
- ble G_M61143_IG07
+ ble G_M61143_IG06
;; size=16 bbWeight=0.75 PerfScore 5.64 G_M61143_IG04: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [x0, #0x18]
- cbz x0, G_M61143_IG07
+ cbz x0, G_M61143_IG06
;; size=8 bbWeight=0.60 PerfScore 2.41
-G_M61143_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61143_IG05: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M61143_IG07 + ;; size=4 bbWeight=0.48 PerfScore 0.48 +G_M61143_IG06: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_METHOD + ; gcr arg pop 0 + ;; size=20 bbWeight=0.27 PerfScore 0.81 +G_M61143_IG07: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE ; byrRegs +[x0] ; gcr arg pop 0 @@ -77,30 +88,31 @@ G_M61143_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs -[x0] ldr x0, [x0, #0x08] ;; size=12 bbWeight=0.75 PerfScore 5.26
-G_M61143_IG06: ; bbWeight=0.75, epilog, nogc, extend
+G_M61143_IG08: ; bbWeight=0.75, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.75 PerfScore 3.76
-G_M61143_IG07: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0]
+G_M61143_IG09: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x20] + ldr x0, [x19, #0x38] + ldr x0, [x0, #0x10] + cbz x0, G_M61143_IG11 + ;; size=12 bbWeight=0.25 PerfScore 1.74 +G_M61143_IG10: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + b G_M61143_IG12 + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M61143_IG11: ; bbWeight=0.05, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_METHOD ; gcr arg pop 0
- b G_M61143_IG05 - ;; size=24 bbWeight=0.27 PerfScore 1.08 -G_M61143_IG08: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20] - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M61143_IG16 - ;; size=12 bbWeight=0.25 PerfScore 1.74 -G_M61143_IG09: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.05 PerfScore 0.15 +G_M61143_IG12: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:GetInstance():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -156,16 +168,16 @@ G_M61143_IG09: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {} str x0, [fp, #0x18] // [V03 loc1] ; GC ptr vars +{V03} ;; size=144 bbWeight=0.25 PerfScore 8.55
-G_M61143_IG10: ; bbWeight=0.25, gcVars=0000000000008000 {V03}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref - b G_M61143_IG13
+G_M61143_IG13: ; bbWeight=0.25, gcVars=0000000000008000 {V03}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref + b G_M61143_IG16
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M61143_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M61143_IG14: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0]
- b G_M61143_IG13
+ b G_M61143_IG16
;; size=8 bbWeight=0 PerfScore 0.00
-G_M61143_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M61143_IG15: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] @@ -192,7 +204,7 @@ G_M61143_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ; gcrRegs -[x0] ; gcr arg pop 0 cmn w0, #2
- beq G_M61143_IG11
+ beq G_M61143_IG14
ldr x0, [x21, #0x08] ; gcrRegs +[x0] mov x1, x20 @@ -208,7 +220,7 @@ G_M61143_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] ;; size=104 bbWeight=0 PerfScore 0.00
-G_M61143_IG13: ; bbWeight=0.25, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz
+G_M61143_IG16: ; bbWeight=0.25, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.__Canon]:MoveNext():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -216,9 +228,9 @@ G_M61143_IG13: ; bbWeight=0.25, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbnz w0, G_M61143_IG12
+ cbnz w0, G_M61143_IG15
;; size=24 bbWeight=0.25 PerfScore 1.61
-G_M61143_IG14: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
+G_M61143_IG17: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V03} mov x0, x21 ; gcrRegs +[x0] @@ -231,25 +243,15 @@ G_M61143_IG14: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=200 ; gcrRegs -[x21] ; gcr arg pop 0 ;; size=28 bbWeight=0.25 PerfScore 2.23
-G_M61143_IG15: ; bbWeight=0.25, epilog, nogc, extend
+G_M61143_IG18: ; bbWeight=0.25, epilog, nogc, extend
ldp x23, x24, [sp, #0x70] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x80 ret lr ;; size=20 bbWeight=0.25 PerfScore 1.24
-G_M61143_IG16: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x20] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - b G_M61143_IG09 - ;; size=24 bbWeight=0.05 PerfScore 0.20 -G_M61143_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc - ; gcrRegs -[x20]
+G_M61143_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; gcrRegs -[x0]
stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -257,7 +259,7 @@ G_M61143_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #128 str x3, [sp, #0x18] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M61143_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M61143_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] @@ -265,7 +267,7 @@ G_M61143_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 540, prolog size 44, PerfScore 43.97, instruction count 135, allocated bytes for code 540 (MethodHash=85b71128) for method Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
+; Total bytes of code 540, prolog size 44, PerfScore 44.33, instruction count 135, allocated bytes for code 540 (MethodHash=85b71128) for method Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
; ============================================================ Unwind Info: @@ -316,4 +318,4 @@ Unwind Info: *************** EH table for Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M61143_IG10..G_M61143_IG14) handled by [G_M61143_IG17..END) (fault)
+EH#0: try [G_M61143_IG13..G_M61143_IG17) handled by [G_M61143_IG19..END) (fault)
+0 (0.00%) : 113145.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
@@ -18,7 +18,7 @@ ; V06 tmp2 [V06,T08] ( 4, 3.67) ref -> x15 ; V07 tmp3 [V07,T06] ( 3, 4 ) long -> x1 "spilling helperCall" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T09] ( 5, 3 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V09 tmp5 [V09,T09] ( 6, 3 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V10 tmp6 [V10,T03] ( 4, 5.08) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> ; V11 cse0 [V11,T05] ( 6, 4.53) long -> x0 multi-def "CSE - aggressive" ; V12 cse1 [V12,T10] ( 5, 3 ) long -> x2 "CSE - aggressive" @@ -40,7 +40,7 @@ G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50 G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG21
cmp w1, #0 bgt G_M21827_IG06 ;; size=12 bbWeight=1 PerfScore 2.50 @@ -106,7 +106,7 @@ G_M21827_IG09: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG20
ldr x1, [x19, #0x18] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E @@ -115,15 +115,26 @@ G_M21827_IG09: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} ldr x3, [x2, #0xD1FFAB1E] ; gcrRegs +[x3] cmp x1, x3
- bne G_M21827_IG11
+ bne G_M21827_IG14
;; size=72 bbWeight=1 PerfScore 25.50 G_M21827_IG10: ; bbWeight=0.69, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x1 x3] ldr x20, [x2] ; gcrRegs +[x20]
- b G_M21827_IG13 - ;; size=8 bbWeight=0.69 PerfScore 2.77 -G_M21827_IG11: ; bbWeight=0.31, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.69 PerfScore 2.08 +G_M21827_IG11: ; bbWeight=0.92, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M21827_IG20 + ;; size=4 bbWeight=0.92 PerfScore 0.92 +G_M21827_IG12: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x18] + cbz x1, G_M21827_IG16 + ;; size=16 bbWeight=1 PerfScore 10.00 +G_M21827_IG13: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M21827_IG17 + ;; size=4 bbWeight=0.80 PerfScore 0.80 +G_M21827_IG14: ; bbWeight=0.31, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x1] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 @@ -131,9 +142,9 @@ G_M21827_IG11: ; bbWeight=0.31, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ldr x3, [x3] ; gcrRegs +[x3] cmp x1, x3
- beq G_M21827_IG15
+ beq G_M21827_IG19
;; size=24 bbWeight=0.31 PerfScore 1.85
-G_M21827_IG12: ; bbWeight=0.23, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+G_M21827_IG15: ; bbWeight=0.23, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x3] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 @@ -145,25 +156,10 @@ G_M21827_IG12: ; bbWeight=0.23, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 cmp x1, x3 csel x20, xzr, x2, ne ; gcrRegs +[x20]
- ;; size=28 bbWeight=0.23 PerfScore 1.96 -G_M21827_IG13: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1-x3] - cbz x20, G_M21827_IG19 - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x1, [x1, #0x18] - cbz x1, G_M21827_IG16 - ;; size=20 bbWeight=1 PerfScore 11.00 -G_M21827_IG14: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M21827_IG17 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M21827_IG15: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20] - ldr x20, [x2, #0x08] - ; gcrRegs +[x20] - b G_M21827_IG13 - ;; size=8 bbWeight=0.08 PerfScore 0.31
+ b G_M21827_IG11 + ;; size=32 bbWeight=0.23 PerfScore 2.19
G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1-x3]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -189,12 +185,18 @@ G_M21827_IG18: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M21827_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M21827_IG19: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x20, [x2, #0x08] + ; gcrRegs +[x20] + cbnz x20, G_M21827_IG12 + ;; size=8 bbWeight=0.08 PerfScore 0.31 +G_M21827_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x20]
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M21827_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -204,7 +206,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 404, prolog size 16, PerfScore 76.55, instruction count 101, allocated bytes for code 404 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 404, prolog size 16, PerfScore 76.01, instruction count 101, allocated bytes for code 404 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 114036.dasm - System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeysDefaultComparerNoNext_Ascending(int,int):int:this (Tier1)

@@ -46,31 +46,31 @@ G_M16336_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w0, [x0, x3] ; gcrRegs -[x0] cmp w4, w0
- bge G_M16336_IG04
+ bge G_M16336_IG06
;; size=56 bbWeight=1 PerfScore 19.50 G_M16336_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movn w3, #0
- b G_M16336_IG05 - ;; size=8 bbWeight=0.64 PerfScore 0.95 -G_M16336_IG04: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M16336_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M16336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w1, w2 cmp w3, #0 csel w0, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M16336_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M16336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M16336_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16336_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + cmp w4, w0 + cset x3, gt + b G_M16336_IG04 + ;; size=12 bbWeight=0.36 PerfScore 0.73 +G_M16336_IG07: ; 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 108, prolog size 8, PerfScore 25.82, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 25.55, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 140080.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.BigStruct]:SwapIfGreater(System.Span1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)

@@ -22,7 +22,7 @@ ;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Collections.BigStruct>
-; V13 tmp8 [V13,T12] ( 3, 2 ) int -> x2 "Inline return value spill temp"
+; V13 tmp8 [V13,T12] ( 3, 2.00) int -> x2 "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V15 tmp10 [V15,T05] ( 3, 3 ) byref -> x22 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V16 tmp11 [V16,T06] ( 3, 3 ) int -> x23 single-def "field V00._length (fldOffset=0x8)" P-INDEP @@ -54,11 +54,11 @@ G_M55686_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=48 bbWeight=1 PerfScore 9.00 G_M55686_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz cmp w19, w20
- beq G_M55686_IG12
+ beq G_M55686_IG13
;; size=8 bbWeight=1 PerfScore 1.50 G_M55686_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz cmp w19, w23
- bhs G_M55686_IG11
+ bhs G_M55686_IG12
ubfiz x0, x19, #5, #32 add x24, x22, x0 ; byrRegs +[x24] @@ -70,7 +70,7 @@ G_M55686_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x2 ldp x1, x2, [x0, #0x10] stp x1, x2, [fp, #0x48] cmp w20, w23
- bhs G_M55686_IG11
+ bhs G_M55686_IG12
ubfiz x0, x20, #5, #32 ; byrRegs -[x0] add x26, x22, x0 @@ -88,25 +88,20 @@ G_M55686_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x2 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M55686_IG13
+ bne G_M55686_IG11
cmp w25, w27
- bge G_M55686_IG05
+ bge G_M55686_IG10
;; size=112 bbWeight=1 PerfScore 40.50 G_M55686_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, byref ; gcrRegs -[x21] ; byrRegs -[x22] movn w2, #0
- b G_M55686_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.95 -G_M55686_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, byref - cmp w25, w27 - cset x2, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M55686_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, byref, isz
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M55686_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, byref, isz
cmp w2, #0
- bgt G_M55686_IG08
+ bgt G_M55686_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M55686_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55686_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x24 x26] ldr x27, [sp, #0xB8] ldp x25, x26, [sp, #0xA8] @@ -116,7 +111,7 @@ G_M55686_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0xC0 ret lr ;; size=28 bbWeight=1 PerfScore 8.00
-G_M55686_IG08: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, gcvars, byref
+G_M55686_IG07: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, gcvars, byref
; byrRegs +[x24 x26] ldp x0, x1, [x24] stp x0, x1, [fp, #0x58] @@ -125,19 +120,38 @@ G_M55686_IG08: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=000 ldp q16, q17, [x26] stp q16, q17, [x24] ;; size=24 bbWeight=0.39 PerfScore 5.47
-G_M55686_IG09: ; bbWeight=0.39, nogc, extend
+G_M55686_IG08: ; bbWeight=0.39, nogc, extend
add x0, fp, #88 ldp q16, q17, [x0] stp q16, q17, [x26] ;; size=12 bbWeight=0.39 PerfScore 1.76
-G_M55686_IG10: ; bbWeight=0.39, extend - b G_M55686_IG07
+G_M55686_IG09: ; bbWeight=0.39, extend + b G_M55686_IG06
;; size=4 bbWeight=0.39 PerfScore 0.39
-G_M55686_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55686_IG10: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=5000000 {x24 x26}, byref + cmp w25, w27 + cset x2, gt + b G_M55686_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.73 +G_M55686_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=5000000 {x24 x26}, byref + ; gcrRegs +[x21] + str w25, [fp, #0x44] // [V07 tmp2+0x0c] + str w27, [fp, #0x24] // [V08 tmp3+0x0c] + add x2, fp, #24 // [V08 tmp3] + add x1, fp, #56 // [V07 tmp2] + ldr x0, [x21, #0x08] + ; gcrRegs +[x0] + ldr x3, [x21, #0x18] + blr x3 + ; gcrRegs -[x0 x21] + sxtw w2, w0 + b G_M55686_IG05 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M55686_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x24 x26] bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M55686_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+G_M55686_IG13: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x21] ; byrRegs +[x22] movz x0, #8 @@ -153,22 +167,8 @@ G_M55686_IG12: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x2 blr x2 b G_M55686_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M55686_IG13: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=5000000 {x24 x26}, byref - ; byrRegs -[x22] +[x24 x26] - str w25, [fp, #0x44] // [V07 tmp2+0x0c] - str w27, [fp, #0x24] // [V08 tmp3+0x0c] - add x2, fp, #24 // [V08 tmp3] - add x1, fp, #56 // [V07 tmp2] - ldr x0, [x21, #0x08] - ; gcrRegs +[x0] - ldr x3, [x21, #0x18] - blr x3 - ; gcrRegs -[x0 x21] - sxtw w2, w0 - b G_M55686_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 348, prolog size 28, PerfScore 69.44, instruction count 87, allocated bytes for code 348 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
+; Total bytes of code 348, prolog size 28, PerfScore 69.17, instruction count 87, allocated bytes for code 348 (MethodHash=db432679) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+4 (+2.63%) : 86237.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2278
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2278
; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -47,36 +47,21 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {} mov x15, x1 ; gcrRegs +[x15] tst w3, #255
- bne G_M38662_IG10
+ bne G_M38662_IG11
mov x14, x2 ; gcrRegs +[x14]
- cbz x14, G_M38662_IG05
+ cbz x14, G_M38662_IG03
mov w12, wzr ldr w14, [x14, #0x08] ; gcrRegs -[x14] cmp w14, #0
- ble G_M38662_IG05
+ bgt G_M38662_IG07
;; size=36 bbWeight=1 PerfScore 8.50
-G_M38662_IG03: ; bbWeight=0.47, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
+G_M38662_IG03: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- add xip0, x2, #16 - ; byrRegs +[xip0] - ;; size=4 bbWeight=0.47 PerfScore 0.23 -G_M38662_IG04: ; bbWeight=0.86, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz - ldr x1, [xip0, w12, UXTW #3] - ; gcrRegs +[x1] - ldrsh w1, [x1, #0x10] - ; gcrRegs -[x1] - tbnz w1, #0, G_M38662_IG09 - add w12, w12, #1 - cmp w12, w14 - blt G_M38662_IG04 - ;; size=24 bbWeight=0.86 PerfScore 7.78 -G_M38662_IG05: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref - ; byrRegs -[xip0]
mov w1, wzr ;; size=4 bbWeight=1 PerfScore 0.50
-G_M38662_IG06: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG04: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
mov w14, #122 strb w14, [x0, #0x12] add x14, x0, #8 @@ -85,9 +70,9 @@ G_M38662_IG06: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 { ; gcrRegs -[x15] ; byrRegs -[x14] tst w1, #255
- bne G_M38662_IG11
+ bne G_M38662_IG12
;; size=24 bbWeight=1 PerfScore 4.50
-G_M38662_IG07: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG05: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
add x14, x0, #24 ; byrRegs +[x14] mov x15, x2 @@ -96,31 +81,49 @@ G_M38662_IG07: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, b ; gcrRegs -[x0 x2 x15] ; byrRegs -[x14] ;; size=12 bbWeight=1 PerfScore 2.00
-G_M38662_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M38662_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M38662_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
+G_M38662_IG07: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x2 x15]
+ add xip0, x2, #16 + ; byrRegs +[xip0] + ;; size=4 bbWeight=0.47 PerfScore 0.23 +G_M38662_IG08: ; bbWeight=0.86, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz + ldr x1, [xip0, w12, UXTW #3] + ; gcrRegs +[x1] + ldrsh w1, [x1, #0x10] + ; gcrRegs -[x1] + tbnz w1, #0, G_M38662_IG10 + add w12, w12, #1 + cmp w12, w14 + blt G_M38662_IG08 + ;; size=24 bbWeight=0.86 PerfScore 7.78 +G_M38662_IG09: ; bbWeight=0.47, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref + ; byrRegs -[xip0] + b G_M38662_IG03 + ;; size=4 bbWeight=0.47 PerfScore 0.47 +G_M38662_IG10: ; bbWeight=0, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
mov w1, #1
- b G_M38662_IG06
+ b G_M38662_IG04
;; size=8 bbWeight=0 PerfScore 0.00
-G_M38662_IG10: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG11: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15] +[x1] mov x15, x1 ; gcrRegs +[x15] mov w1, #1 ; gcrRegs -[x1]
- b G_M38662_IG06
+ b G_M38662_IG04
;; size=12 bbWeight=0 PerfScore 0.00
-G_M38662_IG11: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG12: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15] mov w1, #1 strh w1, [x0, #0x10]
- b G_M38662_IG07
+ b G_M38662_IG05
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 27.01, instruction count 38, allocated bytes for code 152 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 27.48, instruction count 39, allocated bytes for code 156 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
; ============================================================ Unwind Info: @@ -131,7 +134,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- 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

-20 (-10.87%) : 248029.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)

@@ -2,20 +2,22 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> x21 single-def -; V01 arg1 [V01,T01] ( 4, 3 ) long -> x20 single-def -; V02 arg2 [V02,T00] ( 10, 6.82) ref -> x19 class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> x20 single-def +; V01 arg1 [V01,T02] ( 3, 3 ) long -> x21 single-def +; V02 arg2 [V02,T00] ( 7, 7 ) ref -> x19 class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> x1 "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -24,43 +26,16 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] mov fp, sp
- mov x21, x0 - ; byrRegs +[x21] - mov x20, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x21, x1
mov x19, x2 ; gcrRegs +[x19] ;; size=28 bbWeight=1 PerfScore 5.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - cbz x19, G_M14814_IG06
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + cbnz x19, G_M14814_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - mov x0, x20 - mov x1, x19 - ; gcrRegs +[x1] - bl <unknown method> - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - cbz x19, G_M14814_IG07 - ;; size=20 bbWeight=0.99 PerfScore 3.48 -G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ;; size=8 bbWeight=0.82 PerfScore 0.82 -G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - b <unknown method> - ; gcr arg pop 0 - ;; size=16 bbWeight=0.82 PerfScore 4.09 -G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz - ; gcrRegs -[x1] - ; byrRegs -[x0]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -73,7 +48,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x20
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M14814_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + mov x0, x21
mov x1, x19 ; gcrRegs +[x1] bl <unknown method> @@ -81,11 +58,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M14814_IG04 - ;; size=56 bbWeight=0.01 PerfScore 0.07 -G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19] - ; byrRegs -[x21]
+ cbz x19, G_M14814_IG06 + mov x0, x20 + ; gcrRegs -[x0] + ; byrRegs +[x0] + mov x1, x19 + ; gcrRegs +[x1] + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + b <unknown method> + ; gcr arg pop 0 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x1 x19] + ; byrRegs -[x0 x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -109,7 +98,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 28, PerfScore 14.46, instruction count 46, allocated bytes for code 184 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 164, prolog size 28, PerfScore 21.50, instruction count 41, allocated bytes for code 164 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.67%) : 248028.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)

@@ -2,37 +2,38 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3648
; No matching PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 4, 2 ) byref -> x0 single-def -; V01 arg1 [V01,T08] ( 5, 3 ) long -> x1 single-def -; V02 arg2 [V02,T07] ( 5, 3 ) ref -> x2 class-hnd single-def <System.Object> -;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref -;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T10] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> -; V06 tmp2 [V06,T11] ( 2, 0 ) int -> x19 "Inline return value spill temp" -; V07 tmp3 [V07,T02] ( 4, 360.15) byref -> x3 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 3, 16.31) long -> x4 "Inlining Arg" -; V09 tmp5 [V09,T01] ( 4, 711.15) int -> x5 "Inline stloc first use temp" -; V10 tmp6 [V10,T00] ( 5,1409 ) int -> x6 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 18.46) byref -> x7 "Inline stloc first use temp" -; V12 tmp8 [V12,T03] ( 5, 96 ) int -> x8 "Inline stloc first use temp" -; V13 tmp9 [V13,T06] ( 2, 12.31) long -> x9 "Inline stloc first use temp" -; V14 tmp10 [V14,T12] ( 3, 0 ) long -> x19 "Inline stloc first use temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V00 arg0 [V00,T10] ( 4, 3.42) byref -> x0 single-def +; V01 arg1 [V01,T08] ( 5, 11.96) long -> x1 single-def +; V02 arg2 [V02,T09] ( 5, 4.42) ref -> x2 class-hnd single-def <System.Object> +;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> +; V06 tmp2 [V06,T12] ( 2, 2.00) int -> x9 "Inline return value spill temp" +; V07 tmp3 [V07,T04] ( 4, 67.48) byref -> x3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T05] ( 3, 66.04) long -> x4 "Inlining Arg" +; V09 tmp5 [V09,T03] ( 4,100.95) int -> x5 "Inline stloc first use temp" +; V10 tmp6 [V10,T00] ( 5,138.86) int -> x6 "Inline stloc first use temp" +; V11 tmp7 [V11,T02] ( 5,101.32) byref -> x7 "Inline stloc first use temp" +; V12 tmp8 [V12,T01] ( 5,122.66) int -> x8 "Inline stloc first use temp" +; V13 tmp9 [V13,T06] ( 2, 62.04) long -> x9 "Inline stloc first use temp" +; V14 tmp10 [V14,T07] ( 3, 17.13) long -> x9 "Inline stloc first use temp" +;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+G_M34926_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref ; gcrRegs +[x2] ; byrRegs +[x0] @@ -56,7 +57,7 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by lsr x5, x5, x6 mov w6, wzr ;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+G_M34926_IG03: ; bbWeight=31.02, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w7, w5, #1 mov w8, #24 smull x7, w7, w8 @@ -66,40 +67,56 @@ G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x ldr x9, [x7, #0x08] and w8, w8, #0xD1FFAB1E cmp x9, x4
- beq G_M34926_IG11 - ;; size=36 bbWeight=6.15 PerfScore 70.77 -G_M34926_IG04: ; bbWeight=77.54, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ beq G_M34926_IG07 + ;; size=36 bbWeight=31.02 PerfScore 356.71 +G_M34926_IG04: ; bbWeight=29.41, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- cbz w8, G_M34926_IG09 - ;; size=4 bbWeight=77.54 PerfScore 77.54 -G_M34926_IG05: ; bbWeight=352, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ cbz w8, G_M34926_IG12 + ;; size=4 bbWeight=29.41 PerfScore 29.41 +G_M34926_IG05: ; bbWeight=34.46, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w6, w6, #1 add w5, w5, w6
- ldr w7, [x3, #0x04] - and w5, w5, w7
+ ldr w9, [x3, #0x04] + and w5, w5, w9
cmp w6, #8 blt G_M34926_IG03
- ;; size=24 bbWeight=352 PerfScore 2112.00 -G_M34926_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
+ ;; size=24 bbWeight=34.46 PerfScore 206.79 +G_M34926_IG06: ; bbWeight=0.90, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs -[x3]
- b G_M34926_IG09 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M34926_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz - cmp w19, #1 - bne G_M34926_IG09
+ b G_M34926_IG12 + ;; size=4 bbWeight=0.90 PerfScore 0.90 +G_M34926_IG07: ; bbWeight=8.06, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, byref, isz + ; byrRegs +[x3 x7] + ldr x9, [x7, #0x10] + eor x9, x9, x1 + cmp x9, #1 + bhi G_M34926_IG04 + ;; size=16 bbWeight=8.06 PerfScore 40.32 +G_M34926_IG08: ; bbWeight=0.20, gcrefRegs=0004 {x2}, byrefRegs=0081 {x0 x7}, byref, isz + ; byrRegs -[x3] + dmb ishld + ldr w3, [x7] + cmp w8, w3 + bne G_M34926_IG12 + ;; size=16 bbWeight=0.20 PerfScore 2.92 +G_M34926_IG09: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs -[x7] + cmp w9, #1 + bne G_M34926_IG12 + ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M34926_IG10: ; bbWeight=0.52, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
mov x1, x2 ; gcrRegs +[x1] bl <unknown method> ; gcrRegs -[x1-x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M34926_IG08: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.78 +G_M34926_IG11: ; bbWeight=0.52, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04 +G_M34926_IG12: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x2] ; byrRegs +[x0] movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) @@ -110,39 +127,24 @@ G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 { ; gcrRegs -[x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M34926_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=20 bbWeight=0.90 PerfScore 4.92 +G_M34926_IG13: ; bbWeight=0.90, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, gcvars, byref, isz - ; gcrRegs +[x2] - ; byrRegs +[x0 x3 x7] - ldr x9, [x7, #0x10] - eor x19, x9, x1 - cmp x19, #1 - bhi G_M34926_IG04 - dmb ishld - ldr w3, [x7] - ; byrRegs -[x3] - cmp w8, w3 - bne G_M34926_IG09 - b G_M34926_IG07 - ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.90 PerfScore 1.79
-; Total bytes of code 240, prolog size 12, PerfScore 2280.31, instruction count 60, allocated bytes for code 240 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 666.08, instruction count 56, allocated bytes for code 224 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -153,10 +155,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-5.95%) : 247881.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)

@@ -2,25 +2,28 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 98 ) long -> x20 single-def -; V01 arg1 [V01,T07] ( 3, 98 ) long -> x21 single-def -; V02 arg2 [V02,T05] ( 5,100 ) int -> x19 single-def -; V03 loc0 [V03,T01] ( 5,385 ) int -> x23
+; V00 arg0 [V00,T07] ( 3, 74.00) long -> x20 single-def +; V01 arg1 [V01,T08] ( 3, 74.00) long -> x21 single-def +; V02 arg2 [V02,T06] ( 5, 76.00) int -> x19 single-def +; V03 loc0 [V03,T01] ( 5,289.00) int -> x23
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T10] ( 3, 6.00) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp4 [V08,T02] ( 2,384 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String> -; V09 tmp5 [V09,T03] ( 2,384 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp4 [V08,T02] ( 2,288.00) ref -> x26 class-hnd exact "Inlining Arg" <System.String> +; V09 tmp5 [V09,T03] ( 2,288.00) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T04] ( 3,288 ) long -> x25 "CSE - aggressive" -; V12 cse1 [V12,T08] ( 4, 99 ) long -> x22 "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 3,216.00) long -> x25 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 4, 75.00) long -> x22 "CSE - aggressive" +; V13 cse2 [V13,T05] ( 5, 88.00) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,10 +44,23 @@ G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x22, #0xD1FFAB1E LSL #32 ldr x0, [x22] ; gcrRegs +[x0]
- cbnz x0, G_M44736_IG07
+ cbz x0, G_M44736_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ;; size=44 bbWeight=0.80 PerfScore 6.80 +G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -68,8 +84,8 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, wzr cmp w19, #0 ble G_M44736_IG08
- ;; size=72 bbWeight=1 PerfScore 13.50 -G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1.00 PerfScore 13.50 +G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x24, [x22] ; gcrRegs +[x24] sbfiz x25, x23, #3, #32 @@ -95,52 +111,36 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x24 x26]
- cbz w0, G_M44736_IG06 - ;; size=72 bbWeight=96 PerfScore 2304.00 -G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M44736_IG07 + ;; size=72 bbWeight=72.00 PerfScore 1728.00 +G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=28.80 PerfScore 216.00 +G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1 cmp w23, w19
- bge G_M44736_IG08 - b G_M44736_IG04 - ;; size=16 bbWeight=96 PerfScore 288.00 -G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG05 - ;; size=48 bbWeight=0.32 PerfScore 3.00 -G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG03 - ;; size=48 bbWeight=0.01 PerfScore 0.06 -G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M44736_IG05 + ;; size=12 bbWeight=72.00 PerfScore 144.00 +G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 336, prolog size 24, PerfScore 2621.07, instruction count 84, allocated bytes for code 336 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 2126.80, instruction count 79, allocated bytes for code 316 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================ Unwind Info: @@ -151,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.35%) : 247884.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)

@@ -2,55 +2,124 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T03] ( 6, 41.78) int -> x19 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T01] ( 5, 39 ) int -> x20 -; V03 loc2 [V03,T08] ( 3, 0 ) int -> x0 -; V04 loc3 [V04,T06] ( 7, 0 ) int -> x20
+; V02 loc1 [V02,T00] ( 5,165.21) int -> x1 +; V03 loc2 [V03,T02] ( 3, 76.26) int -> x2 +; V04 loc3 [V04,T01] ( 8,119.79) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V08 tmp3 [V08,T02] ( 2, 39 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -;* V09 tmp4 [V09,T03] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP -; V10 tmp5 [V10,T00] ( 2, 78 ) byref -> x1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V11 tmp6 [V11,T04] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -; V12 tmp7 [V12,T09] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T06] ( 2, 38.89) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +;* V09 tmp4 [V09,T08] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T07] ( 2, 2 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V11 tmp6 [V11,T09] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V12 tmp7 [V12,T04] ( 3, 40.27) int -> x0 "fgMakeTemp is creating a new local variable"
; V13 tmp8 [V13,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 rat0 [V14,T10] ( 3, 0 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V14 rat0 [V14,T05] ( 3, 40.27) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0
-G_M22313_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp mov w19, w0 ;; size=16 bbWeight=1 PerfScore 3.00 G_M22313_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M22313_IG04 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M22313_IG03: ; bbWeight=39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E
+ tbnz w19, #31, G_M22313_IG15 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + mov w1, wzr + ;; size=20 bbWeight=1 PerfScore 3.00 +G_M22313_IG03: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + ldr w2, [x0, w1, UXTW #2] + cmp w2, w19 + bge G_M22313_IG13 + ;; size=12 bbWeight=37.89 PerfScore 170.53 +G_M22313_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + add w1, w1, #1 + cmp w1, #72 + blt G_M22313_IG03 + ;; size=12 bbWeight=42.11 PerfScore 84.21 +G_M22313_IG05: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0] + orr w20, w19, #1 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + bge G_M22313_IG08 + ;; size=16 bbWeight=0.53 PerfScore 1.32 +G_M22313_IG06: ; bbWeight=25.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov w0, w20 + movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov w20, wzr - b G_M22313_IG05 - ;; size=20 bbWeight=39 PerfScore 117.00 -G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + cbnz w0, G_M22313_IG10 + ;; size=28 bbWeight=25.81 PerfScore 180.70 +G_M22313_IG07: ; bbWeight=28.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w20, #2 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + blt G_M22313_IG06 + ;; size=16 bbWeight=28.68 PerfScore 71.71 +G_M22313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w19 + ;; size=4 bbWeight=0.36 PerfScore 0.18 +G_M22313_IG09: ; bbWeight=0.36, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.36 PerfScore 1.08 +G_M22313_IG10: ; bbWeight=6.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + sub w0, w20, #1 + movz w1, #0xD1FFAB1E + movk w1, #0xD1FFAB1E LSL #16 + smull x1, w1, w0 + asr x1, x1, #32 + asr w2, w1, #4 + add w1, w2, w1, LSR #31 + mov w2, #101 + msub w0, w1, w2, w0 + cbz w0, G_M22313_IG07 + ;; size=40 bbWeight=6.71 PerfScore 67.12 +G_M22313_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w20 + ;; size=4 bbWeight=0.17 PerfScore 0.08 +G_M22313_IG12: ; bbWeight=0.17, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.17 PerfScore 0.50 +G_M22313_IG13: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w2 + ;; size=4 bbWeight=0.47 PerfScore 0.24 +G_M22313_IG14: ; bbWeight=0.47, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.47 PerfScore 1.42 +G_M22313_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -61,7 +130,7 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -69,73 +138,15 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M22313_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz - ; byrRegs +[x1] - ldr w0, [x1, w20, UXTW #2] - cmp w0, w19 - bge G_M22313_IG06 - add w20, w20, #1 - cmp w20, #72 - blt G_M22313_IG05 - orr w20, w19, #1 - b G_M22313_IG09 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M22313_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x1] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov w0, w20 - movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M22313_IG08 - sub w0, w20, #1 - movz w1, #0xD1FFAB1E - movk w1, #0xD1FFAB1E LSL #16 - smull x1, w1, w0 - asr x1, x1, #32 - asr w2, w1, #4 - add w1, w2, w1, LSR #31 - mov w2, #101 - msub w0, w1, w2, w0 - cbnz w0, G_M22313_IG11 - ;; size=68 bbWeight=0 PerfScore 0.00 -G_M22313_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add w20, w20, #2 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movn w0, #0xD1FFAB1E LSL #16 - cmp w20, w0 - blt G_M22313_IG07 - mov w0, w19 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M22313_IG10: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, w20 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG12: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00
+ brk_unix #0 + ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 121.00, instruction count 69, allocated bytes for code 276 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 585.07, instruction count 72, allocated bytes for code 288 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+5.56%) : 247940.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)

@@ -2,36 +2,39 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data ; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 2.83) long -> x0 single-def -; V01 arg1 [V01,T05] ( 6, 15.64) long -> x19 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) long -> x2 single-def -; V03 loc0 [V03,T02] ( 18, 51.36) long -> x20 -; V04 loc1 [V04,T06] ( 14, 11.73) int -> x21
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> x0 single-def +; V01 arg1 [V01,T05] ( 6, 19.60) long -> x19 single-def +; V02 arg2 [V02,T07] ( 3, 3 ) long -> x2 single-def +; V03 loc0 [V03,T02] ( 18, 91.25) long -> x20 +; V04 loc1 [V04,T08] ( 14, 4.44) int -> x21
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T04] ( 6, 18.08) long -> x3 -; V07 loc4 [V07,T10] ( 5, 2.64) long -> x2 -; V08 loc5 [V08,T07] ( 2, 8.41) long -> x1
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> x3 +; V07 loc4 [V07,T09] ( 5, 3.54) long -> x2 +; V08 loc5 [V08,T06] ( 2, 17.38) long -> x1
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T00] ( 6,100.29) long -> x3 "Inlining Arg" -; V13 tmp4 [V13,T01] ( 5, 83.57) byref -> x4 "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> x3 "Inlining Arg" +; V13 tmp4 [V13,T01] ( 5,169.35) byref -> x4 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T03] ( 3, 30.76) byref -> x1 single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> x1 single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T11] ( 3, 0.93) byref -> x0 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> x0 "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -45,18 +48,24 @@ G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov x20, xzr cmp x2, #4
- blo G_M6063_IG06
+ bhs G_M6063_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6063_IG03: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbz w2, #1, G_M6063_IG13 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG09 + ;; size=4 bbWeight=0.32 PerfScore 0.32 +G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x2, #4
- ;; size=4 bbWeight=0.05 PerfScore 0.03 -G_M6063_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.45 PerfScore 0.22 +G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x3, x20, #1 ldr x3, [x0, x3] tst x3, #0xD1FFAB1E
- bne G_M6063_IG12 - ;; size=16 bbWeight=0.51 PerfScore 2.79 -G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne G_M6063_IG18 + ;; size=16 bbWeight=18.82 PerfScore 103.49 +G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x19, x20 strb w3, [x4] lsr x3, x3, #16 @@ -67,52 +76,44 @@ G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre strb w3, [x4, #0x03] add x20, x20, #4 cmp x20, x1
- bls G_M6063_IG04 - ;; size=44 bbWeight=8.36 PerfScore 79.39 -G_M6063_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbz w2, #1, G_M6063_IG09 - ;; size=4 bbWeight=0.07 PerfScore 0.07 -G_M6063_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bls G_M6063_IG06 + ;; size=44 bbWeight=16.93 PerfScore 160.88 +G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG03 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x1, x20, #1 ldr w21, [x0, x1] tst w21, #0xD1FFAB1E
- bne G_M6063_IG14 - ;; size=16 bbWeight=0.32 PerfScore 1.75 -G_M6063_IG08: ; bbWeight=5.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M6063_IG12 + ;; size=16 bbWeight=0.32 PerfScore 1.79 +G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tst w21, #0xD1FFAB1E + bne G_M6063_IG17 + ;; size=8 bbWeight=0.53 PerfScore 0.80 +G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG16 + ;; size=4 bbWeight=0.43 PerfScore 0.43 +G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, x19, x20 strb w21, [x1] lsr w3, w21, #16 strb w3, [x1, #0x01] add x20, x20, #2
- ;; size=20 bbWeight=5.13 PerfScore 20.51 -G_M6063_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbnz w2, #0, G_M6063_IG16 - ;; size=4 bbWeight=0.52 PerfScore 0.52 -G_M6063_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.68 +G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbnz w2, #0, G_M6063_IG20 + ;; size=4 bbWeight=0.47 PerfScore 0.47 +G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x20
- ;; size=4 bbWeight=0.26 PerfScore 0.13 -G_M6063_IG11: ; bbWeight=0.26, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.26 PerfScore 1.31 -G_M6063_IG12: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw w21, w3 - tst w21, #0xD1FFAB1E - bne G_M6063_IG14 - ;; size=12 bbWeight=0.19 PerfScore 0.38 -G_M6063_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, x19, x20 - strb w21, [x0] - lsr w1, w21, #16 - strb w1, [x0, #0x01] - lsr x21, x3, #32 - add x20, x20, #2 - ;; size=24 bbWeight=0.15 PerfScore 0.77 -G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tst w21, #0xD1FFAB1E - bne G_M6063_IG15
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -125,25 +126,39 @@ G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x2, [x2] blr x2 ; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00 -G_M6063_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.43 PerfScore 3.61 +G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tst w21, #0xD1FFAB1E
- beq G_M6063_IG17
+ bne G_M6063_IG14 + b G_M6063_IG21 + ;; size=12 bbWeight=0.53 PerfScore 1.33 +G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtw w21, w3 + tst w21, #0xD1FFAB1E + bne G_M6063_IG10 + ;; size=12 bbWeight=0.38 PerfScore 0.75 +G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, x19, x20 + strb w21, [x0] + lsr w1, w21, #16 + strb w1, [x0, #0x01] + lsr x21, x3, #32 + add x20, x20, #2
b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M6063_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lsl x1, x20, #1 - ldrh w21, [x0, x1]
+ ;; size=28 bbWeight=0.20 PerfScore 1.17 +G_M6063_IG20: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lsl x2, x20, #1 + ldrh w21, [x0, x2]
cmp w21, #127
- bhi G_M6063_IG10 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M6063_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bhi G_M6063_IG14 + ;; size=16 bbWeight=0.37 PerfScore 2.06 +G_M6063_IG21: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb w21, [x19, x20] add x20, x20, #1
- b G_M6063_IG10 - ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M6063_IG14 + ;; size=12 bbWeight=0.30 PerfScore 0.75
-; Total bytes of code 288, prolog size 20, PerfScore 113.65, instruction count 72, allocated bytes for code 288 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
+; Total bytes of code 304, prolog size 20, PerfScore 291.49, instruction count 76, allocated bytes for code 304 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
; ============================================================ Unwind Info: @@ -154,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+5.59%) : 247992.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)

@@ -2,39 +2,45 @@ ; Emitting BLENDED_CODE for generic ARM64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 11, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase> -; V01 arg1 [V01,T02] ( 4, 2.29) int -> x21 single-def -; V02 arg2 [V02,T01] ( 9, 2.43) int -> x20 -; V03 arg3 [V03,T04] ( 6, 2 ) int -> x23 single-def -; V04 arg4 [V04,T03] ( 9, 2 ) ref -> x22 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T05] ( 11, 5.22) ref -> x20 class-hnd single-def <System.Reflection.MethodBase> +; V01 arg1 [V01,T06] ( 4, 4.00) int -> x21 single-def +; V02 arg2 [V02,T04] ( 9, 5.91) int -> x19 +; V03 arg3 [V03,T08] ( 6, 3.65) int -> x23 single-def +; V04 arg4 [V04,T07] ( 8, 3.83) ref -> x22 class-hnd single-def <System.Type[]>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]> ;* V06 loc1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref ;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref ;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T08] ( 5, 0 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo> -; V10 loc5 [V10,T07] ( 7, 0 ) int -> x19 -; V11 loc6 [V11,T10] ( 3, 0 ) ref -> x0 class-hnd <System.Type>
+; V09 loc4 [V09,T13] ( 4, 0.46) ref -> x21 class-hnd single-def <System.Reflection.ParameterInfo> +; V10 loc5 [V10,T00] ( 6, 39.53) int -> x19 +; V11 loc6 [V11,T01] ( 3, 19.36) ref -> x0 class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V14 tmp2 [V14,T13] ( 3, 0 ) int -> x0 "Span.get_Item index" -; V15 tmp3 [V15,T15] ( 2, 0 ) int -> x0 "Span.get_Item index"
+; V14 tmp2 [V14,T17] ( 3, 0.33) int -> x0 "Span.get_Item index" +; V15 tmp3 [V15,T12] ( 2, 0.49) int -> x0 "Span.get_Item index"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> -;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> -; V20 tmp8 [V20,T09] ( 4, 0 ) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP -; V21 tmp9 [V21,T06] ( 8, 0 ) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP -;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP -;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP -; V24 tmp12 [V24,T11] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V25 tmp13 [V25,T12] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V26 cse0 [V26,T05] ( 3, 0.00) ref -> x1 "CSE - conservative"
+;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> +;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> +; V22 tmp10 [V22,T09] ( 4, 2.98) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP +; V23 tmp11 [V23,T02] ( 9, 11.61) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP +;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP +;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP +; V26 tmp14 [V26,T16] ( 3, 0.33) ref -> x0 single-def "argument with side effect" +; V27 tmp15 [V27,T11] ( 3, 0.73) ref -> x0 single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 0.34) long -> x24 "CSE - conservative" +; V29 cse1 [V29,T03] ( 2, 8.66) byref -> x22 hoist "CSE - aggressive" +; V30 cse2 [V30,T10] ( 6, 2.54) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 0 @@ -44,36 +50,18 @@ G_M44091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x20] stp x23, x24, [sp, #0x30] mov fp, sp
- mov x19, x0 - ; gcrRegs +[x19]
+ mov x20, x0 + ; gcrRegs +[x20]
mov w21, w1
- mov w20, w2
+ mov w19, w2
mov w23, w3 mov x22, x4 ; gcrRegs +[x22] ;; size=40 bbWeight=1 PerfScore 7.00
-G_M44091_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - cbz x19, G_M44091_IG06
+G_M44091_IG02: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x20, G_M44091_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M44091_IG03: ; bbWeight=0.14, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - eor w20, w20, #2 - and w0, w20, w21 - cmp w0, w21 - beq G_M44091_IG16 - ;; size=16 bbWeight=0.14 PerfScore 0.36 -G_M44091_IG04: ; bbWeight=8.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19 x22] - mov w0, wzr - ;; size=4 bbWeight=8.14 PerfScore 4.07 -G_M44091_IG05: ; bbWeight=8.14, 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=8.14 PerfScore 40.71 -G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19 x22]
+G_M44091_IG03: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -86,149 +74,24 @@ G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M44091_IG03 - ;; size=40 bbWeight=0.00 PerfScore 0.01 -G_M44091_IG07: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x19] - ; byrRegs +[x21] - tbz w20, #18, G_M44091_IG08 - ldr w0, [x22, #0x08] - cmp w0, w24 - bhs G_M44091_IG15 - ldr x0, [x21, w0, UXTW #3] - ; gcrRegs +[x0] - ldr x1, [x0] - ldr x1, [x1, #0x48] - ldr x1, [x1, #0x20] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - tbnz w0, #4, G_M44091_IG13 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M44091_IG08: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cbz w24, G_M44091_IG04 - ldr w0, [x22, #0x08] - sub w1, w24, #1 - cmp w0, w1 - blt G_M44091_IG04 - sub w0, w24, #1 - ldr x20, [x21, w0, UXTW #3] - ; gcrRegs +[x20]
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M44091_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + eor w19, w19, #2 + and w0, w19, w21 + cmp w0, w21 + bne G_M44091_IG11 + ;; size=16 bbWeight=1.00 PerfScore 2.50 +G_M44091_IG05: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + tst w23, #3 + beq G_M44091_IG30 + ;; size=8 bbWeight=0.80 PerfScore 1.20 +G_M44091_IG06: ; bbWeight=0.72, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M44091_IG14 + ;; size=4 bbWeight=0.72 PerfScore 0.72 +G_M44091_IG07: ; bbWeight=0.57, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0] ldr x1, [x20]
- ldr x1, [x1, #0x48] - ldr x1, [x1, #0x38] - blr x1 - ; gcrRegs -[x22] - ; byrRegs -[x21] - ; gcr arg pop 0 - ldr x1, [x0] - ldr x1, [x1, #0x60] - ldr x1, [x1, #0x10] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - mov x0, x20 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov w2, wzr - ldr x3, [x20] - ldr x3, [x3, #0x50] - ldr x3, [x3, #0x20] - blr x3 - ; gcrRegs -[x0 x20] - ; gcr arg pop 0 - cbnz w0, G_M44091_IG13 - b G_M44091_IG04 - ;; size=112 bbWeight=0 PerfScore 0.00 -G_M44091_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs +[x22] - ; byrRegs +[x21] - tbz w20, #16, G_M44091_IG13 - tbnz w20, #8, G_M44091_IG13 - mov w19, wzr - b G_M44091_IG12 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M44091_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ldr w1, [x22, #0x08] - cmp w19, w1 - bhs G_M44091_IG15 - add x1, x22, #16 - ; byrRegs +[x1] - ldr x0, [x1, w19, UXTW #3] - ; gcrRegs +[x0] - cbz x0, G_M44091_IG11 - ldr x1, [x21, w19, UXTW #3] - ; gcrRegs +[x1] - ; byrRegs -[x1] - movz x2, #0xD1FFAB1E // code for System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - ;; size=52 bbWeight=0 PerfScore 0.00 -G_M44091_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - add w19, w19, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cmp w19, w24 - blt G_M44091_IG10 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M44091_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - ; byrRegs -[x21] - mov w0, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG14: ; bbWeight=0, 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 PerfScore 0.00 -G_M44091_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG16: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19 x22] - tst w23, #3 - bne G_M44091_IG18 - tbz w23, #1, G_M44091_IG17 - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x60] - ldr x1, [x1] - blr x1
...

libraries_tests.run.linux.arm64.Release.mch

-36 (-4.11%) : 175124.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)

@@ -5,11 +5,11 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 89808
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 89808
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 12.59) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
+; V00 this [V00,T00] ( 17, 12.60) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
; V01 loc0 [V01,T20] ( 4, 2.00) ubyte -> x1 ; V02 loc1 [V02,T18] ( 3, 3.00) int -> x1 single-def ; V03 loc2 [V03,T09] ( 6, 5.59) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule> @@ -24,11 +24,11 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.18) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.18) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition> ; V17 tmp10 [V17,T12] ( 3, 3.06) int -> x1 "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.20) byref -> x1 "impAppendStmt" ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,9 +48,9 @@ ; V36 tmp29 [V36,T23] ( 2, 2.00) int -> x2 "Inline stloc first use temp" ; V37 tmp30 [V37,T21] ( 3, 2.00) int -> x1 "Inline return value spill temp" ;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 5.99) byref -> x22 "Inlining Arg" -; V40 tmp33 [V40,T08] ( 5, 5.99) int -> x19 "Inlining Arg" -; V41 tmp34 [V41,T19] ( 3, 2.34) int -> x23 "Inline stloc first use temp"
+; V39 tmp32 [V39,T07] ( 5, 5.99) byref -> x3 "Inlining Arg" +; V40 tmp33 [V40,T08] ( 5, 5.99) int -> x2 "Inlining Arg" +; V41 tmp34 [V41,T19] ( 3, 2.34) int -> x1 "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -61,18 +61,18 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.25) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.25) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP ; V55 tmp48 [V55 ] ( 6, 4.05) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP ; V56 tmp49 [V56 ] ( 7, 6.58) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T24] ( 2, 2.00) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V57 tmp50 [V57,T24] ( 2, 2.00) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T25] ( 2, 2.00) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP ;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.06) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP -; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.06) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP +; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.06) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP ;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP ;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP @@ -86,39 +86,162 @@ ;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP ; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP ; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.59) int -> x1 "CSE - aggressive"
+; V77 cse0 [V77,T10] ( 3, 4.59) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 40 G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ str x21, [sp, #0x48]
mov fp, sp stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
- add x1, sp, #96
+ add x1, sp, #80
str x1, [fp, #0x30] // [V76 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0] ldr w1, [x0, #0x10] ldr x19, [x0, #0x08] ; gcrRegs +[x19]
- cbz w1, G_M11515_IG05
+ cbz w1, G_M11515_IG14
;; size=12 bbWeight=1 PerfScore 7.00 G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz cmp w1, #1
- bne G_M11515_IG28
+ bne G_M11515_IG18
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref movn w1, #2 str w1, [x0, #0x10]
- b G_M11515_IG07 - ;; size=12 bbWeight=1.00 PerfScore 2.50 -G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M11515_IG05: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + add x1, x0, #36 + ; byrRegs +[x1] + ldp w3, w2, [x1] + cmp w2, w3 + bge G_M11515_IG15 + add w2, w2, #1 + str w2, [x1, #0x04] + ldr w1, [x0, #0x28] + ; byrRegs -[x1] + and w20, w1, #0xD1FFAB1E + ldr x1, [x19, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M11515_IG16 + ;; size=40 bbWeight=1.53 PerfScore 21.44 +G_M11515_IG06: ; bbWeight=1.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0-x1] + ldrb w1, [x19, #0x6C] + cbnz w1, G_M11515_IG21 + ldr x21, [x19, #0x18] + ; gcrRegs +[x21] + ldr w1, [x21, #0x50] + cbnz w1, G_M11515_IG19 + sxtw w1, w20 + ;; size=24 bbWeight=1.53 PerfScore 17.59 +G_M11515_IG07: ; bbWeight=1.53, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str x21, [fp, #0x20] // [V55 tmp48] + str w1, [fp, #0x28] // [V56 tmp49] + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + ldrb w1, [x0, #0x18] + cbz w1, G_M11515_IG10 + ;; size=20 bbWeight=1.53 PerfScore 12.24 +G_M11515_IG08: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG20 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w1, [x1, #0x08] + ; byrRegs -[x1] + add w1, w2, w1 + mov w2, w1 + add x2, x2, #4 + ldrsw x4, [x3, #0x08] + cmp x2, x4 + bhi G_M11515_IG22 + ldr x2, [x3] + sxtw x1, w1 + ldr w21, [x2, x1] + ;; size=88 bbWeight=1.53 PerfScore 47.28 +G_M11515_IG09: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x3] + tst w21, #6 + bne G_M11515_IG05 + ;; size=8 bbWeight=1.53 PerfScore 2.29 +G_M11515_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG24 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w4, [x1, #0x10] + add w2, w2, w4 + ldrb w1, [x1, #0x07] + ; byrRegs -[x1] + cbnz w1, G_M11515_IG13 + ;; size=64 bbWeight=1.00 PerfScore 22.98 +G_M11515_IG11: ; bbWeight=0.78, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + mov w1, w2 + add x1, x1, #4 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x1, [x3] + sxtw x2, w2 + ldr w1, [x1, x2] + tst w1, #0xD1FFAB1E + bne G_M11515_IG23 + ;; size=40 bbWeight=0.78 PerfScore 10.53 +G_M11515_IG12: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + stp w20, w1, [x0, #0x1C] + mov w1, #1 + str w1, [x0, #0x10] + b G_M11515_IG25 + ;; size=16 bbWeight=1.00 PerfScore 3.50 +G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs +[x3] + mov w1, w2 + add x1, x1, #2 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x3, [x3] + ; byrRegs -[x3] + sxtw x2, w2 + ldrh w1, [x3, x2] + b G_M11515_IG12 + ;; size=36 bbWeight=0.22 PerfScore 2.85 +G_M11515_IG14: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19]
movn w1, #0 str w1, [x0, #0x10] mov x0, x19 @@ -143,117 +266,16 @@ G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs +[x0] b G_M11515_IG04 ;; size=72 bbWeight=0.00 PerfScore 0.04
-G_M11515_IG06: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] - tst w22, #6 - beq G_M11515_IG14 - ;; size=8 bbWeight=1.53 PerfScore 2.29 -G_M11515_IG07: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - add x20, x0, #36 - ; byrRegs +[x20]
...

-16 (-3.74%) : 209755.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)

@@ -19,38 +19,37 @@ ; V07 tmp3 [V07,T09] ( 3, 2.40) long -> x1 "spilling helperCall" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V09 tmp5 [V09,T08] ( 5, 2.60) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 5, 3 ) long -> x21 "CSE - aggressive"
-; V12 cse1 [V12,T13] ( 3, 1.50) long -> x23 "CSE - moderate"
+; V12 cse1 [V12,T13] ( 3, 1.50) long -> x1 "CSE - moderate"
; V13 rat0 [V13,T11] ( 3, 1.76) long -> x0 "Spilling to split statement for tree" ; V14 rat1 [V14,T12] ( 3, 1.60) long -> x1 "runtime lookup" ; V15 rat2 [V15,T10] ( 3, 2.24) long -> x1 "fgMakeTemp is creating a new local variable" ; V16 rat3 [V16,T07] ( 3, 2.64) long -> x0 "Spilling to split statement for tree" ; V17 rat4 [V17,T05] ( 3, 3.36) long -> x1 "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M39444_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M39444_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M39444_IG19
+ tbnz w1, #31, G_M39444_IG18
cmp w1, #0
- bgt G_M39444_IG20
+ bgt G_M39444_IG19
;; size=12 bbWeight=1 PerfScore 2.50 G_M39444_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x15, x20 ; gcrRegs +[x15]
- cbz x15, G_M39444_IG06
+ cbz x15, G_M39444_IG09
;; size=8 bbWeight=1 PerfScore 1.50 G_M39444_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -67,42 +66,54 @@ G_M39444_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M39444_IG18 - ldr x20, [x19, #0x18] - ; gcrRegs +[x20]
+ bne G_M39444_IG17 + ldr x0, [x19, #0x18] + ; gcrRegs +[x0]
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- ldr x0, [x21, #0xD1FFAB1E] - ; gcrRegs +[x0] - cmp x20, x0 - bne G_M39444_IG14
+ ldr x1, [x21, #0xD1FFAB1E] + ; gcrRegs +[x1] + cmp x0, x1 + bne G_M39444_IG16
;; size=72 bbWeight=1 PerfScore 25.50 G_M39444_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0-x1]
ldr x22, [x21] ; gcrRegs +[x22]
- b G_M39444_IG11 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M39444_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.50 PerfScore 1.50 +G_M39444_IG06: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M39444_IG17 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M39444_IG07: ; bbWeight=0.60, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ldr x0, [x19] + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x28] + cbz x1, G_M39444_IG13 + ;; size=20 bbWeight=0.60 PerfScore 7.80 +G_M39444_IG08: ; bbWeight=0.48, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + b G_M39444_IG14 + ;; size=4 bbWeight=0.48 PerfScore 0.48 +G_M39444_IG09: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x30]
- cbz x1, G_M39444_IG08
+ cbz x1, G_M39444_IG11
;; size=20 bbWeight=0.40 PerfScore 5.20
-G_M39444_IG07: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M39444_IG09
+G_M39444_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M39444_IG12
;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M39444_IG08: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M39444_IG11: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.08 PerfScore 0.24
-G_M39444_IG09: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M39444_IG12: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -114,50 +125,15 @@ G_M39444_IG09: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x15] b G_M39444_IG04 ;; size=32 bbWeight=0.40 PerfScore 3.00
-G_M39444_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x20] - ldr x0, [x23, #0x08] - ; gcrRegs +[x0] - ldr x1, [x21, #0x10] - ; gcrRegs +[x1] - cmp x20, x0 - csel x22, xzr, x1, ne - ; gcrRegs +[x22] - ;; size=16 bbWeight=0.50 PerfScore 3.50 -G_M39444_IG11: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0-x1 x20] - cbz x22, G_M39444_IG18 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M39444_IG12: ; bbWeight=0.60, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19] - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x1, [x1, #0x28] - cbz x1, G_M39444_IG15 - ;; size=20 bbWeight=0.60 PerfScore 7.80 -G_M39444_IG13: ; bbWeight=0.48, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - b G_M39444_IG16 - ;; size=4 bbWeight=0.48 PerfScore 0.48 -G_M39444_IG14: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] +[x20] - movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - ldr x0, [x23] - ; gcrRegs +[x0] - cmp x20, x0 - beq G_M39444_IG21 - b G_M39444_IG10 - ;; size=28 bbWeight=0.50 PerfScore 3.50 -G_M39444_IG15: ; bbWeight=0.12, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20] +[x22]
+G_M39444_IG13: ; bbWeight=0.12, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.12 PerfScore 0.36
-G_M39444_IG16: ; bbWeight=0.60, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M39444_IG14: ; bbWeight=0.60, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
mov x0, x1 mov x1, x22 ; gcrRegs +[x1] @@ -171,21 +147,37 @@ G_M39444_IG16: ; bbWeight=0.60, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0 x15] ; byrRegs -[x14] ;; size=24 bbWeight=0.60 PerfScore 2.40
-G_M39444_IG17: ; bbWeight=0.60, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+G_M39444_IG15: ; bbWeight=0.60, epilog, nogc, extend + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.60 PerfScore 3.60 -G_M39444_IG18: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=0.60 PerfScore 2.40 +G_M39444_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x2, [x1] + ; gcrRegs +[x2] + cmp x0, x2 + beq G_M39444_IG20 + ldr x1, [x1, #0x08] + ; gcrRegs +[x1] + ldr x2, [x21, #0x10] + cmp x0, x1 + csel x22, xzr, x2, ne + ; gcrRegs +[x22] + b G_M39444_IG06 + ;; size=44 bbWeight=0.50 PerfScore 7.00 +G_M39444_IG17: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x0-x2 x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.40 PerfScore 2.40 -G_M39444_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.40 PerfScore 1.60 +G_M39444_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -194,7 +186,7 @@ G_M39444_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 blr x1 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M39444_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M39444_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x19 ; gcrRegs +[x0] @@ -206,14 +198,14 @@ G_M39444_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] b G_M39444_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M39444_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M39444_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] ldr x22, [x21, #0x08] ; gcrRegs +[x22]
- b G_M39444_IG11
+ b G_M39444_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 428, prolog size 24, PerfScore 71.80, instruction count 107, allocated bytes for code 428 (MethodHash=978a65eb) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 412, prolog size 20, PerfScore 68.30, instruction count 103, allocated bytes for code 412 (MethodHash=978a65eb) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info: ...

-16 (-2.01%) : 578872.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)

@@ -12,13 +12,13 @@ ; V00 this [V00,T01] ( 12, 6 ) ref -> x19 this class-hnd single-def <System.Net.Sockets.Socket> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]> ; V02 arg2 [V02,T04] ( 4, 3 ) int -> x21 single-def
-; V03 arg3 [V03,T02] ( 9, 4 ) byref -> x20 single-def -; V04 loc0 [V04 ] ( 7, 3 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V03 arg3 [V03,T02] ( 7, 4 ) byref -> x20 single-def +; V04 loc0 [V04 ] ( 6, 3 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T15] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException> ;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V08 tmp3 [V08,T16] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V09 tmp4 [V09,T12] ( 4, 2 ) int -> x0 "Inline return value spill temp"
+; V09 tmp4 [V09,T12] ( 3, 2 ) int -> x0 "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 8, 10.29) ref -> x24 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle> ; V11 tmp6 [V11 ] ( 2, 0 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -27,10 +27,10 @@ ; V15 tmp10 [V15,T14] ( 3, 0.43) byref -> x26 single-def "impAppendStmt" ; V16 tmp11 [V16 ] ( 2, 4 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" ; V17 tmp12 [V17 ] ( 1, 1 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V18 tmp13 [V18,T08] ( 2, 4 ) int -> x7 "Inlining Arg"
+; V18 tmp13 [V18,T07] ( 2, 4 ) int -> x7 "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]> ; V20 tmp15 [V20 ] ( 5, 5 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "Inline ldloca(s) first use temp" <System.Memory`1[ubyte]>
-; V21 tmp16 [V21,T05] ( 4, 4 ) int -> x25 "Inlining Arg"
+; V21 tmp16 [V21,T08] ( 2, 4 ) int -> x0 "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref ;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref single-def ; V24 tmp19 [V24,T21] ( 2, 0 ) int -> x1 @@ -43,8 +43,8 @@ ; V31 tmp26 [V31,T23] ( 2, 0 ) long -> x1 "Inlining Arg" ; V32 tmp27 [V32,T19] ( 2, 0 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SocketsTelemetry> ;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V34 tmp29 [V34,T06] ( 3, 2 ) byref -> x22 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V35 tmp30 [V35,T07] ( 3, 2 ) int -> x23 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V34 tmp29 [V34,T05] ( 3, 2 ) byref -> x22 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V35 tmp30 [V35,T06] ( 3, 2 ) int -> x23 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V36 tmp31 [V36 ] ( 0, 0 ) ref -> zero-ref "field V19._object (fldOffset=0x0)" P-INDEP ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "field V19._index (fldOffset=0x8)" P-INDEP ;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0xc)" P-INDEP @@ -75,23 +75,23 @@ G_M58478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=52 bbWeight=1 PerfScore 9.50 G_M58478_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=500000 {x20 x22}, byref, isz ldr w0, [x19, #0x60]
- cbnz w0, G_M58478_IG11
+ cbnz w0, G_M58478_IG12
ldrb w0, [x19, #0x66] cbz w0, G_M58478_IG03 ldrb w0, [x19, #0x67]
- cbz w0, G_M58478_IG12
+ cbz w0, G_M58478_IG13
;; size=24 bbWeight=1 PerfScore 12.00 G_M58478_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=500000 {x20 x22}, byref, isz ldr x24, [x19, #0x08] ; gcrRegs +[x24] ldrb w0, [x24, #0x37]
- cbnz w0, G_M58478_IG14
+ cbnz w0, G_M58478_IG10
add x0, x24, #32 ; byrRegs +[x0] ldapr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M58478_IG05
+ cbz x0, G_M58478_IG09
;; size=24 bbWeight=1 PerfScore 11.50 G_M58478_IG04: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=500000 {x20 x22}, byref ; gcrRegs -[x0] @@ -118,11 +118,41 @@ G_M58478_IG04: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=50000 blr x8 ; gcrRegs -[x0 x4 x24] ; byrRegs -[x1 x22]
- b G_M58478_IG06 - ;; size=76 bbWeight=1 PerfScore 25.00 -G_M58478_IG05: ; bbWeight=0.07, gcrefRegs=1080000 {x19 x24}, byrefRegs=500000 {x20 x22}, byref, isz - ; gcrRegs +[x24] - ; byrRegs +[x22]
+ ;; size=72 bbWeight=1 PerfScore 24.00 +G_M58478_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + str w0, [x20] + ldr w0, [fp, #0x40] // [V04 loc0] + cbz w0, G_M58478_IG14 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M58478_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr w0, [x20] + cbnz w0, G_M58478_IG15 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + ldrb w0, [x0, #0x9D] + ; gcrRegs -[x0] + cbnz w0, G_M58478_IG11 + ;; size=32 bbWeight=1 PerfScore 12.50 +G_M58478_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20] + ldr w0, [fp, #0x40] // [V04 loc0] + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M58478_IG08: ; bbWeight=1, epilog, nogc, extend + ldp x25, x26, [sp, #0x80] + ldp x23, x24, [sp, #0x70] + ldp x21, x22, [sp, #0x60] + ldp x19, x20, [sp, #0x50] + ldp fp, lr, [sp, #0x08] + add sp, sp, #144 + ret lr + ;; size=28 bbWeight=1 PerfScore 6.50 +G_M58478_IG09: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=1080000 {x19 x24}, byrefRegs=500000 {x20 x22}, gcvars, byref, isz + ; gcrRegs +[x19 x24] + ; byrRegs +[x20 x22]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -141,7 +171,7 @@ G_M58478_IG05: ; bbWeight=0.07, gcrefRegs=1080000 {x19 x24}, byrefRegs=50 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1]
- cbz x26, G_M58478_IG13
+ cbz x26, G_M58478_IG17
mov x0, x26 ; byrRegs +[x0] mov x1, x25 @@ -152,43 +182,60 @@ G_M58478_IG05: ; bbWeight=0.07, gcrefRegs=1080000 {x19 x24}, byrefRegs=50 ; byrRegs -[x0 x26] b G_M58478_IG04 ;; size=76 bbWeight=0.07 PerfScore 1.04
-G_M58478_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M58478_IG10: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=500000 {x20 x22}, byref + ; gcrRegs -[x0] + mov x1, x22 + ; byrRegs +[x1] + mov w2, w23 + add x4, fp, #64 // [V04 loc0] + add x5, fp, #56 // [V11 tmp6] + mov x0, x24 + ; gcrRegs +[x0] + mov w3, w21 + movz x6, #0xD1FFAB1E // code for <unknown method> + movk x6, #0xD1FFAB1E LSL #16 + movk x6, #0xD1FFAB1E LSL #32 + ldr x6, [x6] + blr x6
; gcrRegs -[x0 x24]
- ; byrRegs -[x22] - str w0, [x20] - ldr w25, [fp, #0x40] // [V04 loc0] - cbz w25, G_M58478_IG15 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M58478_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [x20] - cbnz w0, G_M58478_IG16 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M58478_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x1 x22] + ldr w1, [fp, #0x38] // [V11 tmp6] + mov w2, #0xD1FFAB1E + cmp w0, #0 + csel w0, w1, w2, ne + b G_M58478_IG05 + ;; size=64 bbWeight=0 PerfScore 0.00 +G_M58478_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x20] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] ; gcrRegs +[x0]
- ldrb w0, [x0, #0x9D]
+ ldr w1, [fp, #0x40] // [V04 loc0] + add x0, x0, #0xD1FFAB1E
; gcrRegs -[x0]
- cbnz w0, G_M58478_IG18 - ;; size=24 bbWeight=1 PerfScore 8.50 -G_M58478_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ldr w0, [fp, #0x40] // [V04 loc0] - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M58478_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x25, x26, [sp, #0x80] - ldp x23, x24, [sp, #0x70] - ldp x21, x22, [sp, #0x60] - ldp x19, x20, [sp, #0x50] - ldp fp, lr, [sp, #0x08] - add sp, sp, #144 - ret lr - ;; size=28 bbWeight=1 PerfScore 6.50 -G_M58478_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19]
+ ; byrRegs +[x0] + sxtw x1, w1 + ldaddal x1, x0, [x0] + ; byrRegs -[x0] + ldr w0, [x19, #0x54] + cmp w0, #2 + bne G_M58478_IG07 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + add x0, x0, #0xD1FFAB1E + ; gcrRegs -[x0] + ; byrRegs +[x0] + mov x1, #1 + ldaddal x1, x0, [x0] + ; byrRegs -[x0] + b G_M58478_IG07 + ;; size=76 bbWeight=0 PerfScore 0.00 +G_M58478_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) @@ -199,7 +246,7 @@ G_M58478_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs -[x0 x19] brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M58478_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58478_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -228,53 +275,20 @@ G_M58478_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bl CORINFO_HELP_THROW ; gcrRegs -[x0 x22] ;; size=76 bbWeight=0 PerfScore 0.00
-G_M58478_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M58478_IG14: ; bbWeight=0, gcrefRegs=1080000 {x19 x24}, byrefRegs=500000 {x20 x22}, byref, isz - ; gcrRegs +[x19 x24] - ; byrRegs +[x20 x22] - mov x1, x22 - ; byrRegs +[x1] - mov w2, w23 - add x4, fp, #64 // [V04 loc0] - add x5, fp, #56 // [V11 tmp6] - mov x0, x24 - ; gcrRegs +[x0] - mov w3, w21 - movz x6, #0xD1FFAB1E // code for <unknown method> - movk x6, #0xD1FFAB1E LSL #16 - movk x6, #0xD1FFAB1E LSL #32
...

+4 (+1.22%) : 682534.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)

@@ -48,13 +48,13 @@ G_M58236_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x3] ldr w1, [x0, #0x08] cmp w20, w1
- bhs G_M58236_IG14
+ bhs G_M58236_IG15
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr w4, [x0, w20, UXTW #2] cmp w21, w1
- bhs G_M58236_IG14
+ bhs G_M58236_IG15
ldr w2, [x0, w21, UXTW #2] ldr x0, [x3] ; byrRegs -[x0] @@ -62,23 +62,18 @@ G_M58236_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M58236_IG15
+ bne G_M58236_IG13
cmp w4, w2
- bge G_M58236_IG04
+ bge G_M58236_IG10
;; size=72 bbWeight=1 PerfScore 26.00 G_M58236_IG03: ; bbWeight=0.69, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x3] movn w5, #0
- b G_M58236_IG05 - ;; size=8 bbWeight=0.69 PerfScore 1.04 -G_M58236_IG04: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - cmp w4, w2 - cset x5, gt - ;; size=8 bbWeight=0.31 PerfScore 0.31 -G_M58236_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cbz w5, G_M58236_IG08
+ ;; size=4 bbWeight=0.69 PerfScore 0.35 +G_M58236_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cbz w5, G_M58236_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M58236_IG06: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M58236_IG05: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x19, #0x28] cmp w5, #0 cset x2, gt @@ -87,25 +82,25 @@ G_M58236_IG06: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, cmp w0, w2 csel w0, w1, w11, ne ;; size=28 bbWeight=0.54 PerfScore 3.23
-G_M58236_IG07: ; bbWeight=0.54, epilog, nogc, extend
+G_M58236_IG06: ; bbWeight=0.54, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.54 PerfScore 2.70
-G_M58236_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58236_IG07: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0] cbz x0, G_M58236_IG11 ;; size=8 bbWeight=0.46 PerfScore 1.84
-G_M58236_IG09: ; bbWeight=0.46, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M58236_IG08: ; bbWeight=0.46, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] ldr x1, [x0] movz x2, #0xD1FFAB1E movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M58236_IG13
+ bne G_M58236_IG14
mov w1, w20 mov w2, w21 movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this @@ -115,13 +110,20 @@ G_M58236_IG09: ; bbWeight=0.46, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b blr x3 ; gcrRegs -[x0] ;; size=52 bbWeight=0.46 PerfScore 5.76
-G_M58236_IG10: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M58236_IG09: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.46 PerfScore 2.30
-G_M58236_IG11: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M58236_IG10: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + cmp w4, w2 + cset x5, gt + b G_M58236_IG04 + ;; size=12 bbWeight=0.31 PerfScore 0.62 +G_M58236_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19]
sub w0, w20, w21 ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M58236_IG12: ; bbWeight=0.00, epilog, nogc, extend @@ -130,21 +132,7 @@ G_M58236_IG12: ; bbWeight=0.00, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M58236_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0] - mov w1, w20 - mov w2, w21 - ldr x3, [x0] - ldr x3, [x3, #0x48] - ldr x3, [x3, #0x28] - blr x3 - ; gcrRegs -[x0] - b G_M58236_IG10 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M58236_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_RNGCHKFAIL - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M58236_IG15: ; bbWeight=0, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
+G_M58236_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x3 x19] mov x0, x3 ; gcrRegs +[x0] @@ -157,10 +145,25 @@ G_M58236_IG15: ; bbWeight=0, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, blr x3 ; gcrRegs -[x0] sxtw w5, w0
- b G_M58236_IG05
+ b G_M58236_IG04
;; size=36 bbWeight=0 PerfScore 0.00
+G_M58236_IG14: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x0] + mov w1, w20 + mov w2, w21 + ldr x3, [x0] + ldr x3, [x3, #0x48] + ldr x3, [x3, #0x28] + blr x3 + ; gcrRegs -[x0] + b G_M58236_IG09 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M58236_IG15: ; 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 16, PerfScore 49.19, instruction count 82, allocated bytes for code 328 (MethodHash=00a21c83) for method System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
+; Total bytes of code 332, prolog size 16, PerfScore 48.80, instruction count 83, allocated bytes for code 332 (MethodHash=00a21c83) for method System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
; ============================================================ Unwind Info: @@ -171,7 +174,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+1.69%) : 724841.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap2+ArrayBasedLinkedQueue1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair2[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)

@@ -5,11 +5,11 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3208
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3208
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
+; V00 this [V00,T00] ( 14, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]> ; V02 loc0 [V02,T08] ( 6, 4 ) int -> x20 ; V03 loc1 [V03 ] ( 5, 1.98) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]> @@ -80,7 +80,7 @@ G_M42120_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs +[x1] ldr w14, [x19, #0x18] cmn w14, #1
- beq G_M42120_IG09
+ beq G_M42120_IG10
;; size=12 bbWeight=1 PerfScore 4.50 G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz sxtw w20, w14 @@ -90,11 +90,11 @@ G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ; gcrRegs +[x15] ldr w12, [x15, #0x10] cmp w14, w12
- bhs G_M42120_IG12
+ bhs G_M42120_IG13
ldr x15, [x15, #0x08] ldr w12, [x15, #0x08] cmp w14, w12
- bhs G_M42120_IG11
+ bhs G_M42120_IG12
mov w12, #24 mov xip0, #16 umaddl x14, w14, w12, xip0 @@ -126,25 +126,27 @@ G_M42120_IG05: ; bbWeight=0.99, extend add w2, w1, #1 str w2, [x0, #0x14] ;; size=48 bbWeight=0.99 PerfScore 14.85
-G_M42120_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M42120_IG06: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x3] ldr w0, [x19, #0x10] cmn w0, #1
- bne G_M42120_IG10 - str w20, [x19, #0x10] - ;; size=16 bbWeight=1 PerfScore 5.50
+ bne G_M42120_IG11 + ;; size=12 bbWeight=0.99 PerfScore 4.45
G_M42120_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ str w20, [x19, #0x10] + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42120_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str w20, [x19, #0x14] mov w0, w20 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M42120_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M42120_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60] ldp fp, lr, [sp], #0x80 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -160,7 +162,7 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x22] ldr w1, [x22, #0x08] cmp w1, w21
- bhi G_M42120_IG13
+ bhi G_M42120_IG14
add x1, fp, #24 // [V24 tmp20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -168,9 +170,11 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ldr x2, [x2] blr x2 ; gcrRegs -[x0 x22]
- b G_M42120_IG06 - ;; size=76 bbWeight=0.01 PerfScore 0.28 -G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x10] + cmn w0, #1 + beq G_M42120_IG07 + ;; size=84 bbWeight=0.01 PerfScore 0.32 +G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x21, [x19, #0x08] ; gcrRegs +[x21] ldr w22, [x19, #0x14] @@ -203,12 +207,12 @@ G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x3 ; gcrRegs -[x0 x21]
- b G_M42120_IG07
+ b G_M42120_IG08
;; size=104 bbWeight=0 PerfScore 0.00
-G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -216,7 +220,7 @@ G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
+G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22] add w14, w21, #1 str w14, [x0, #0x10] @@ -236,7 +240,7 @@ G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=000 b G_M42120_IG06 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 36, PerfScore 69.80, instruction count 118, allocated bytes for code 472 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
+; Total bytes of code 480, prolog size 36, PerfScore 69.79, instruction count 120, allocated bytes for code 480 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
; ============================================================ Unwind Info: @@ -247,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.63%) : 699960.dasm - System.Linq.EnumerableSorter2[System.Collections.DictionaryEntry,System.Nullable1[int]]:CompareAnyKeysDefaultComparerNoNext_Ascending(int,int):int:this (Tier1)

@@ -41,7 +41,7 @@ G_M23522_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr x0, [x0, #0x20] ldr w3, [x0, #0x08] cmp w1, w3
- bhs G_M23522_IG07
+ bhs G_M23522_IG09
ubfiz x4, x1, #3, #32 add x4, x4, #16 add x4, x0, x4 @@ -50,7 +50,7 @@ G_M23522_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w4, [x4, #0x04] ; byrRegs -[x4] cmp w2, w3
- bhs G_M23522_IG07
+ bhs G_M23522_IG09
ubfiz x3, x2, #3, #32 add x3, x3, #16 add x0, x0, x3 @@ -59,43 +59,44 @@ G_M23522_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldrb w3, [x0] ldr w0, [x0, #0x04] ; byrRegs -[x0]
- cbz w5, G_M23522_IG09 - cbz w3, G_M23522_IG08
+ cbz w5, G_M23522_IG08 + cbz w3, G_M23522_IG07
cmp w4, w0
- bge G_M23522_IG04
+ bge G_M23522_IG06
;; size=80 bbWeight=1 PerfScore 28.50 G_M23522_IG03: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movn w5, #0
- b G_M23522_IG05 - ;; size=8 bbWeight=0.69 PerfScore 1.04 -G_M23522_IG04: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - cmp w4, w0 - cset x5, gt - ;; size=8 bbWeight=0.31 PerfScore 0.31 -G_M23522_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.69 PerfScore 0.35 +G_M23522_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w1, w2 cmp w5, #0 csel w0, w0, w5, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M23522_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M23522_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M23522_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - bl CORINFO_HELP_RNGCHKFAIL - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M23522_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23522_IG06: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + cmp w4, w0 + cset x5, gt + b G_M23522_IG04 + ;; size=12 bbWeight=0.31 PerfScore 0.62 +G_M23522_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w5, #1
- b G_M23522_IG05
+ b G_M23522_IG04
;; size=8 bbWeight=0 PerfScore 0.00
-G_M23522_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23522_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w5, #0 cmp w3, #0 cinc w5, w5, eq
- b G_M23522_IG05
+ b G_M23522_IG04
;; size=16 bbWeight=0 PerfScore 0.00
+G_M23522_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 152, prolog size 8, PerfScore 34.85, instruction count 38, allocated bytes for code 152 (MethodHash=72f5a41d) for method System.Linq.EnumerableSorter`2[System.Collections.DictionaryEntry,System.Nullable`1[int]]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 34.46, instruction count 39, allocated bytes for code 156 (MethodHash=72f5a41d) for method System.Linq.EnumerableSorter`2[System.Collections.DictionaryEntry,System.Nullable`1[int]]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +107,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- 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

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 23 1 1 21 -12 +4
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 107 50 16 41 -864 +412
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm64.Release.mch 375 111 54 210 -684 +256
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
505 162 71 272 -1,560 +672

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,710 2,779 30,931 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,904 61,290 91,614 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,814 48,019 15,795 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 625,249 382,318 242,931 1 (0.00%) 27 (0.00%)
libraries.crossgen2.linux.arm64.checked.mch 234,496 15 234,481 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,745 6 295,739 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 744,166 490,908 253,258 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,865 21,599 283,266 0 (0.00%) 0 (0.00%)
realworld.run.linux.arm64.checked.mch 33,309 151 33,158 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,033 7 19,026 0 (0.00%) 0 (0.00%)
2,507,291 1,007,092 1,500,199 1 (0.00%) 27 (0.00%)

jit-analyze output

benchmarks.run_pgo.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80093044 (overridden on cmd)
Total bytes of diff: 80093036 (overridden on cmd)
Total bytes of delta: -8 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           4 : 86237.dasm (2.63 % of base)

Top file improvements (bytes):
         -12 : 97288.dasm (-1.39 % of base)

2 total files with Code Size differences (1 improved, 1 regressed), 21 unchanged.

Top method regressions (bytes):
           4 (2.63 % of base) : 86237.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

Top method improvements (bytes):
         -12 (-1.39 % of base) : 97288.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
           4 (2.63 % of base) : 86237.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

Top method improvements (percentages):
         -12 (-1.39 % of base) : 97288.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (Tier1)

2 total methods with Code Size differences (1 improved, 1 regressed).


coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 508732332 (overridden on cmd)
Total bytes of diff: 508731880 (overridden on cmd)
Total bytes of delta: -452 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         208 : 247920.dasm (32.70 % of base)
          52 : 247912.dasm (12.38 % of base)
          32 : 247992.dasm (5.59 % of base)
          20 : 247887.dasm (2.84 % of base)
          16 : 247940.dasm (5.56 % of base)
          16 : 248023.dasm (3.39 % of base)
          12 : 247884.dasm (4.35 % of base)
           8 : 247915.dasm (3.92 % of base)
           8 : 247907.dasm (2.44 % of base)
           8 : 247937.dasm (2.47 % of base)
           8 : 621232.dasm (0.53 % of base)
           8 : 622162.dasm (0.53 % of base)
           4 : 247932.dasm (1.30 % of base)
           4 : 248027.dasm (1.35 % of base)
           4 : 247987.dasm (2.86 % of base)
           4 : 450573.dasm (0.48 % of base)

Top file improvements (bytes):
        -176 : 247939.dasm (-7.89 % of base)
        -160 : 248016.dasm (-40.82 % of base)
         -80 : 247930.dasm (-14.93 % of base)
         -40 : 247926.dasm (-2.79 % of base)
         -32 : 247910.dasm (-1.90 % of base)
         -32 : 247981.dasm (-5.26 % of base)
         -24 : 248024.dasm (-2.75 % of base)
         -20 : 247881.dasm (-5.95 % of base)
         -20 : 248032.dasm (-5.10 % of base)
         -20 : 248029.dasm (-10.87 % of base)
         -16 : 247964.dasm (-4.04 % of base)
         -16 : 606916.dasm (-3.77 % of base)
         -16 : 248028.dasm (-6.67 % of base)
         -12 : 248011.dasm (-3.19 % of base)
         -12 : 248026.dasm (-4.35 % of base)
         -12 : 247900.dasm (-4.55 % of base)
         -12 : 247909.dasm (-5.66 % of base)
          -8 : 247914.dasm (-2.78 % of base)
          -8 : 247933.dasm (-2.56 % of base)
          -8 : 247893.dasm (-2.67 % of base)

44 total files with Code Size differences (28 improved, 16 regressed), 24 unchanged.

Top method regressions (bytes):
         208 (32.70 % of base) : 247920.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
          52 (12.38 % of base) : 247912.dasm - System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
          32 (5.59 % of base) : 247992.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          20 (2.84 % of base) : 247887.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          16 (3.39 % of base) : 248023.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
          16 (5.56 % of base) : 247940.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 247884.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
           8 (2.44 % of base) : 247907.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           8 (3.92 % of base) : 247915.dasm - System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
           8 (0.53 % of base) : 621232.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           8 (0.53 % of base) : 622162.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           8 (2.47 % of base) : 247937.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           4 (0.48 % of base) : 450573.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (1.35 % of base) : 248027.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (2.86 % of base) : 247987.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
           4 (1.30 % of base) : 247932.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)

Top method improvements (bytes):
        -176 (-7.89 % of base) : 247939.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
        -160 (-40.82 % of base) : 248016.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 247930.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -40 (-2.79 % of base) : 247926.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
         -32 (-1.90 % of base) : 247910.dasm - System.Diagnostics.Tracing.XplatEventLogger:.cctor() (FullOpts)
         -32 (-5.26 % of base) : 247981.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -24 (-2.75 % of base) : 248024.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -20 (-5.95 % of base) : 247881.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-5.10 % of base) : 248032.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -20 (-10.87 % of base) : 248029.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -16 (-3.77 % of base) : 606916.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-6.67 % of base) : 248028.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -16 (-4.04 % of base) : 247964.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
         -12 (-4.35 % of base) : 248026.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -12 (-5.66 % of base) : 247909.dasm - System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
         -12 (-3.19 % of base) : 248011.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -12 (-4.55 % of base) : 247900.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -8 (-2.78 % of base) : 247914.dasm - System.Collections.Generic.List`1[ushort]:AddWithResize(ushort):this (FullOpts)
          -8 (-2.17 % of base) : 247890.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
          -8 (-2.67 % of base) : 247893.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)

Top method regressions (percentages):
         208 (32.70 % of base) : 247920.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
          52 (12.38 % of base) : 247912.dasm - System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
          32 (5.59 % of base) : 247992.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          16 (5.56 % of base) : 247940.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 247884.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
           8 (3.92 % of base) : 247915.dasm - System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
          16 (3.39 % of base) : 248023.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
           4 (2.86 % of base) : 247987.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
          20 (2.84 % of base) : 247887.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
           8 (2.47 % of base) : 247937.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           8 (2.44 % of base) : 247907.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           4 (1.35 % of base) : 248027.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (1.30 % of base) : 247932.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
           8 (0.53 % of base) : 621232.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           8 (0.53 % of base) : 622162.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           4 (0.48 % of base) : 450573.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)

Top method improvements (percentages):
        -160 (-40.82 % of base) : 248016.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 247930.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -20 (-10.87 % of base) : 248029.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
        -176 (-7.89 % of base) : 247939.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -16 (-6.67 % of base) : 248028.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -20 (-5.95 % of base) : 247881.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -12 (-5.66 % of base) : 247909.dasm - System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
         -32 (-5.26 % of base) : 247981.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -20 (-5.10 % of base) : 248032.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
          -4 (-5.00 % of base) : 247946.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
         -12 (-4.55 % of base) : 247900.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
         -12 (-4.35 % of base) : 248026.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -16 (-4.04 % of base) : 247964.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
          -4 (-3.85 % of base) : 247899.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
         -16 (-3.77 % of base) : 606916.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -12 (-3.19 % of base) : 248011.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
          -4 (-2.94 % of base) : 247922.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)
         -40 (-2.79 % of base) : 247926.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
          -8 (-2.78 % of base) : 247914.dasm - System.Collections.Generic.List`1[ushort]:AddWithResize(ushort):this (FullOpts)
         -24 (-2.75 % of base) : 248024.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)


libraries_tests.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 395710340 (overridden on cmd)
Total bytes of diff: 395709912 (overridden on cmd)
Total bytes of delta: -428 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 149821.dasm (0.64 % of base)
          12 : 80589.dasm (1.11 % of base)
           8 : 181306.dasm (0.29 % of base)
           8 : 569175.dasm (0.77 % of base)
           8 : 631148.dasm (0.43 % of base)
           8 : 724841.dasm (1.69 % of base)
           8 : 202496.dasm (1.18 % of base)
           4 : 176769.dasm (1.00 % of base)
           4 : 187863.dasm (0.52 % of base)
           4 : 244485.dasm (0.45 % of base)
           4 : 245004.dasm (0.42 % of base)
           4 : 272120.dasm (0.17 % of base)
           4 : 113808.dasm (0.42 % of base)
           4 : 317490.dasm (0.52 % of base)
           4 : 390660.dasm (0.30 % of base)
           4 : 407838.dasm (0.45 % of base)
           4 : 457888.dasm (0.52 % of base)
           4 : 486533.dasm (0.45 % of base)
           4 : 509672.dasm (0.44 % of base)
           4 : 551532.dasm (0.40 % of base)

Top file improvements (bytes):
         -36 : 175124.dasm (-4.11 % of base)
         -16 : 181212.dasm (-1.91 % of base)
         -16 : 209755.dasm (-3.74 % of base)
         -16 : 578872.dasm (-2.01 % of base)
         -12 : 7948.dasm (-0.92 % of base)
         -12 : 629470.dasm (-1.15 % of base)
         -12 : 69655.dasm (-0.91 % of base)
          -8 : 200023.dasm (-1.52 % of base)
          -8 : 272110.dasm (-1.52 % of base)
          -8 : 200519.dasm (-1.52 % of base)
          -8 : 208352.dasm (-1.52 % of base)
          -8 : 554425.dasm (-0.80 % of base)
          -8 : 557685.dasm (-0.53 % of base)
          -8 : 589183.dasm (-1.52 % of base)
          -8 : 629849.dasm (-0.60 % of base)
          -8 : 629893.dasm (-0.60 % of base)
          -8 : 630033.dasm (-0.60 % of base)
          -8 : 630045.dasm (-0.60 % of base)
          -8 : 630073.dasm (-0.60 % of base)
          -8 : 192566.dasm (-1.52 % of base)

63 total files with Code Size differences (32 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
          16 (0.64 % of base) : 149821.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          12 (1.11 % of base) : 80589.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           8 (0.29 % of base) : 181306.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
           8 (1.18 % of base) : 202496.dasm - System.Collections.Concurrent.ConcurrentQueue`1[int]:ToArray():int[]:this (Tier1)
           8 (0.77 % of base) : 569175.dasm - System.Formats.Asn1.AsnWriter:WriteIntegerCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte]):this (Tier1)
           8 (0.43 % of base) : 631148.dasm - System.Text.Json.JsonSerializer:WriteString[System.Nullable`1[System.Text.Json.SourceGeneration.Tests.PersonStruct]](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.Text.Json.SourceGeneration.Tests.PersonStruct]]):System.String (Tier1)
           8 (1.69 % of base) : 724841.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
           4 (1.00 % of base) : 176769.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesForVariable(Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2+VariableIdentifier[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalFunctionState]):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
           4 (0.40 % of base) : 551532.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.40 % of base) : 555784.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.85 % of base) : 681876.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
           4 (0.30 % of base) : 390660.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
           4 (0.30 % of base) : 375668.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
           4 (0.52 % of base) : 187863.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 317490.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 457888.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 537149.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.45 % of base) : 244485.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.42 % of base) : 245004.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.42 % of base) : 113808.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method improvements (bytes):
         -36 (-4.11 % of base) : 175124.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -16 (-1.91 % of base) : 181212.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
         -16 (-3.74 % of base) : 209755.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.01 % of base) : 578872.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
         -12 (-1.15 % of base) : 629470.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:Create_StructListInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Text.Json.Serialization.Tests.StructList`1[int]]:this (Tier1)
         -12 (-0.92 % of base) : 7948.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
         -12 (-0.91 % of base) : 69655.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
          -8 (-0.53 % of base) : 557685.dasm - System.Formats.Asn1.AsnWriter:WriteBitString(System.ReadOnlySpan`1[ubyte],int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
          -8 (-0.65 % of base) : 312629.dasm - System.IO.StreamReader:ReadLine():System.String:this (Tier1)
          -8 (-1.02 % of base) : 270505.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
          -8 (-0.80 % of base) : 554425.dasm - System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests:CheckLength(System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+KeyDescription,ubyte[],int) (Tier1)
          -8 (-0.60 % of base) : 630045.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableDecimal(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.Decimal]]:this (Tier1)
          -8 (-0.60 % of base) : 630033.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableDouble(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[double]]:this (Tier1)
          -8 (-0.60 % of base) : 630073.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableInt128(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.Int128]]:this (Tier1)
          -8 (-0.60 % of base) : 629849.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableInt16(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[short]]:this (Tier1)
          -8 (-0.60 % of base) : 629893.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableInt64(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[long]]:this (Tier1)
          -8 (-0.60 % of base) : 629913.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableUInt16(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[ushort]]:this (Tier1)
          -8 (-0.60 % of base) : 629937.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Metadata+NumberHandlingTestsContext_Metadata:Create_NullableUInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[uint]]:this (Tier1)
          -8 (-1.52 % of base) : 200023.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 208352.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)

Top method regressions (percentages):
           4 (2.63 % of base) : 699960.dasm - System.Linq.EnumerableSorter`2[System.Collections.DictionaryEntry,System.Nullable`1[int]]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
           8 (1.69 % of base) : 724841.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
           4 (1.22 % of base) : 682534.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
           8 (1.18 % of base) : 202496.dasm - System.Collections.Concurrent.ConcurrentQueue`1[int]:ToArray():int[]:this (Tier1)
          12 (1.11 % of base) : 80589.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (1.00 % of base) : 176769.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesForVariable(Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2+VariableIdentifier[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalFunctionState]):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
           4 (0.85 % of base) : 681876.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
           8 (0.77 % of base) : 569175.dasm - System.Formats.Asn1.AsnWriter:WriteIntegerCore(System.Formats.Asn1.Asn1Tag,System.ReadOnlySpan`1[ubyte]):this (Tier1)
          16 (0.64 % of base) : 149821.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
           4 (0.52 % of base) : 187863.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 317490.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 457888.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 537149.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.50 % of base) : 290429.dasm - System.Decimal+DecCalc:VarDecMod(byref,byref) (Tier1)
           4 (0.45 % of base) : 244485.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.45 % of base) : 407838.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.45 % of base) : 486533.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.45 % of base) : 738221.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.45 % of base) : 95756.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.44 % of base) : 509672.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method improvements (percentages):
         -36 (-4.11 % of base) : 175124.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -16 (-3.74 % of base) : 209755.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.01 % of base) : 578872.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
         -16 (-1.91 % of base) : 181212.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
          -8 (-1.52 % of base) : 200023.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 208352.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 589183.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 192566.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 405733.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 497933.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 272110.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
          -8 (-1.52 % of base) : 200519.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
          -8 (-1.49 % of base) : 329558.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -4 (-1.18 % of base) : 186968.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          -4 (-1.18 % of base) : 30410.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          -4 (-1.18 % of base) : 500967.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          -4 (-1.18 % of base) : 71281.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          -4 (-1.18 % of base) : 76467.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
         -12 (-1.15 % of base) : 629470.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:Create_StructListInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Text.Json.Serialization.Tests.StructList`1[int]]:this (Tier1)
          -8 (-1.02 % of base) : 270505.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)



linux x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,579,583 -4
coreclr_tests.run.linux.x64.checked.mch 403,711,931 +183
libraries_tests.run.linux.x64.Release.mch 337,126,106 +405

FullOpts (+584 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 47,779,594 -4
coreclr_tests.run.linux.x64.checked.mch 123,957,229 +183
libraries_tests.run.linux.x64.Release.mch 153,366,413 +405

Example diffs

benchmarks.run_pgo.linux.x64.checked.mch

-6 (-1.66%) : 150177.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -16,7 +16,7 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; V06 tmp2 [V06,T07] ( 4, 3.18) ref -> rsi
-; V07 tmp3 [V07,T06] ( 3, 3.27) long -> rax "spilling helperCall"
+; V07 tmp3 [V07,T06] ( 3, 3.27) long -> rsi "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V09 tmp5 [V09,T08] ( 5, 2.45) ref -> r15 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> ; V10 tmp6 [V10,T04] ( 4, 3.55) ref -> rsi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> @@ -24,34 +24,33 @@ ; V12 rat0 [V12,T10] ( 3, 0.80) long -> rdi "Spilling to split statement for tree" ; V13 rat1 [V13,T11] ( 3, 0.73) long -> rsi "runtime lookup" ; V14 rat2 [V14,T09] ( 3, 1.02) long -> rsi "fgMakeTemp is creating a new local variable"
-; V15 rat3 [V15,T03] ( 3, 4.58) long -> r14 "fgMakeTemp is creating a new local variable"
+; V15 rat3 [V15,T03] ( 3, 4.58) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax
+ sub rsp, 16
lea rbp, [rsp+0x20]
- mov qword ptr [rbp-0x20], rdi
+ mov qword ptr [rbp-0x18], rdi
mov rbx, rdi ; gcrRegs +[rbx] mov r15, rdx ; gcrRegs +[r15]
- ;; size=22 bbWeight=1 PerfScore 7.00
+ ;; size=23 bbWeight=1 PerfScore 5.25
G_M21827_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test esi, esi
- jl G_M21827_IG22
+ jl G_M21827_IG19
test esi, esi
- jg SHORT G_M21827_IG07
+ jg SHORT G_M21827_IG09
;; size=12 bbWeight=1 PerfScore 2.50 G_M21827_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov rsi, r15 ; gcrRegs +[rsi] test rsi, rsi
- je G_M21827_IG14
+ je G_M21827_IG15
;; size=12 bbWeight=1 PerfScore 1.50 G_M21827_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[r15] @@ -65,89 +64,47 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov rsi, qword ptr [rsi] mov rax, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rax
- jne G_M21827_IG19
+ jne G_M21827_IG17
;; size=38 bbWeight=1 PerfScore 11.75 G_M21827_IG05: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rsi, gword ptr [rbx+0x18] ; gcrRegs +[rsi] mov rax, 0xD1FFAB1E ; const ptr cmp rsi, gword ptr [rax]
- jne G_M21827_IG20
+ jne G_M21827_IG18
;; size=23 bbWeight=0.82 PerfScore 5.11
-G_M21827_IG06: ; bbWeight=0.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG06: ; bbWeight=0.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rsi, 0xD1FFAB1E ; const ptr mov r15, gword ptr [rsi] ; gcrRegs +[r15]
- jmp SHORT G_M21827_IG09 - ;; size=15 bbWeight=0.75 PerfScore 3.19 -G_M21827_IG07: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=0.75 PerfScore 1.69 +G_M21827_IG07: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + test r15, r15 + je G_M21827_IG17 + mov rsi, qword ptr [rdi+0x38] + mov rsi, qword ptr [rsi] + mov rsi, qword ptr [rsi+0x18] + test rsi, rsi + je SHORT G_M21827_IG10 + ;; size=25 bbWeight=0.82 PerfScore 6.95 +G_M21827_IG08: ; bbWeight=0.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG11 + ;; size=2 bbWeight=0.65 PerfScore 1.31 +G_M21827_IG09: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx ; gcrRegs +[rdi] call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Initialize(int):int:this] ; gcrRegs -[rdi] jmp SHORT G_M21827_IG03 ;; size=11 bbWeight=0.27 PerfScore 1.43
-G_M21827_IG08: ; bbWeight=0.07, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15] +[rsi] - mov rax, 0xD1FFAB1E ; const ptr - xor r15, r15 - ; gcrRegs +[r15] - mov rcx, 0xD1FFAB1E ; const ptr - cmp rsi, gword ptr [rax] - cmove r15, gword ptr [rcx] - ;; size=30 bbWeight=0.07 PerfScore 0.46 -G_M21827_IG09: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test r15, r15 - je G_M21827_IG19 - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi] - mov r14, qword ptr [rsi+0x18] - test r14, r14 - je SHORT G_M21827_IG16 - ;; size=25 bbWeight=0.82 PerfScore 6.95 -G_M21827_IG10: ; bbWeight=2.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG13 - ;; size=2 bbWeight=2.27 PerfScore 4.55 -G_M21827_IG11: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15]
+G_M21827_IG10: ; bbWeight=0.16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rsi, rax
- ;; size=18 bbWeight=0.04 PerfScore 0.05 -G_M21827_IG12: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.16 PerfScore 0.25 +G_M21827_IG11: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, rsi
- call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] - ; gcrRegs +[rax] - mov rsi, rax - ; gcrRegs +[rsi] - jmp G_M21827_IG04 - ;; size=17 bbWeight=0.18 PerfScore 1.00 -G_M21827_IG13: ; bbWeight=0.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rsi] +[r15] - mov rax, r14 - jmp SHORT G_M21827_IG17 - ;; size=5 bbWeight=0.65 PerfScore 1.47 -G_M21827_IG14: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15] - mov rdi, qword ptr [rbx] - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi] - mov rsi, qword ptr [rsi+0x20] - test rsi, rsi - je SHORT G_M21827_IG11 - ;; size=19 bbWeight=0.18 PerfScore 1.68 -G_M21827_IG15: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG12 - ;; size=2 bbWeight=0.15 PerfScore 0.29 -G_M21827_IG16: ; bbWeight=0.16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[r15] - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ;; size=15 bbWeight=0.16 PerfScore 0.20 -G_M21827_IG17: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rdi, rax
mov rsi, r15 ; gcrRegs +[rsi] call CORINFO_HELP_CHKCASTANY @@ -161,43 +118,72 @@ G_M21827_IG17: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; byrRegs -[rdi] nop ;; size=24 bbWeight=0.82 PerfScore 2.86
-G_M21827_IG18: ; bbWeight=0.82, epilog, nogc, extend - add rsp, 8
+G_M21827_IG12: ; bbWeight=0.82, epilog, nogc, extend + add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.82 PerfScore 2.66 -G_M21827_IG19: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc - add rsp, 8
+ ;; size=9 bbWeight=0.82 PerfScore 2.25 +G_M21827_IG13: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + mov rsi, rax + ;; size=18 bbWeight=0.04 PerfScore 0.05 +G_M21827_IG14: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, rsi + call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] + ; gcrRegs +[rax] + mov rsi, rax + ; gcrRegs +[rsi] + jmp G_M21827_IG04 + ;; size=17 bbWeight=0.18 PerfScore 1.00 +G_M21827_IG15: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax rsi] + mov rdi, qword ptr [rbx] + mov rsi, qword ptr [rdi+0x38] + mov rsi, qword ptr [rsi] + mov rsi, qword ptr [rsi+0x20] + test rsi, rsi + je SHORT G_M21827_IG13 + ;; size=19 bbWeight=0.18 PerfScore 1.68 +G_M21827_IG16: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG14 + ;; size=2 bbWeight=0.15 PerfScore 0.29 +G_M21827_IG17: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 16
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.18 PerfScore 0.59 -G_M21827_IG20: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.18 PerfScore 0.50 +G_M21827_IG18: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rsi] mov rax, 0xD1FFAB1E ; const ptr cmp rsi, gword ptr [rax]
- jne G_M21827_IG08 - ;; size=19 bbWeight=0.07 PerfScore 0.29 -G_M21827_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
+ je SHORT G_M21827_IG20
mov rax, 0xD1FFAB1E ; const ptr
- mov r15, gword ptr [rax]
+ xor r15, r15
; gcrRegs +[r15]
- jmp G_M21827_IG09 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M21827_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r15]
+ mov rcx, 0xD1FFAB1E ; const ptr + cmp rsi, gword ptr [rax] + cmove r15, gword ptr [rcx] + jmp G_M21827_IG07 + ;; size=50 bbWeight=0.07 PerfScore 0.89 +G_M21827_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi r15]
mov edi, 22 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rax, 0xD1FFAB1E ; const ptr + mov r15, gword ptr [rax] + ; gcrRegs +[r15] + jmp G_M21827_IG07 + ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 361, prolog size 16, PerfScore 55.55, instruction count 93, allocated bytes for code 361 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
...

-4 (-1.66%) : 122292.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -55,56 +55,50 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=30 bbWeight=1 PerfScore 8.75 G_M64750_IG02: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref cmp ebx, r15d
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=9 bbWeight=1 PerfScore 1.25 G_M64750_IG03: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz cmp ebx, r12d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov edi, ebx mov esi, dword ptr [r14+4*rdi] cmp r15d, r12d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov edi, r15d mov edx, dword ptr [r14+4*rdi] mov rdi, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this cmp qword ptr [r13+0x18], rdi
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x20] mov eax, dword ptr [rdi+0x08] cmp esi, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov ecx, esi mov ecx, dword ptr [rdi+4*rcx+0x10] cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, edx mov edi, dword ptr [rdi+4*rax+0x10] ; gcrRegs -[rdi] cmp ecx, edi
- jge SHORT G_M64750_IG05 - ;; size=86 bbWeight=1 PerfScore 25.50 -G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+ jge SHORT G_M64750_IG09 + ;; size=82 bbWeight=1 PerfScore 25.50 +G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; gcrRegs -[r13] mov eax, -1
- jmp SHORT G_M64750_IG06 - ;; size=7 bbWeight=0.64 PerfScore 1.43 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - xor eax, eax - cmp ecx, edi - setg al - ;; size=7 bbWeight=0.36 PerfScore 0.54 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
sub esi, edx test eax, eax cmovne esi, eax ;; size=7 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
test esi, esi
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r14] add rsp, 8 pop rbx @@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M64750_IG09: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs +[r14] mov edi, ebx mov edi, dword ptr [r14+4*rdi] @@ -125,13 +119,28 @@ G_M64750_IG09: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=000 mov dword ptr [r14+4*rsi], eax mov esi, r15d mov dword ptr [r14+4*rsi], edi
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=28 bbWeight=0.42 PerfScore 3.78
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz + xor eax, eax + cmp ecx, edi + setg al + jmp SHORT G_M64750_IG05 + ;; size=9 bbWeight=0.36 PerfScore 1.27 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz + ; gcrRegs +[r13] + mov rdi, gword ptr [r13+0x08] + ; gcrRegs +[rdi] + call [r13+0x18]System.Comparison`1[int]:Invoke(int,int):int:this + ; gcrRegs -[rdi r13] + mov esi, eax + jmp SHORT G_M64750_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r14] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[r13] ; byrRegs +[r14] mov rdi, 0xD1FFAB1E @@ -142,16 +151,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, ; gcrRegs -[rsi rdi] jmp G_M64750_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz - mov rdi, gword ptr [r13+0x08] - ; gcrRegs +[rdi] - call [r13+0x18]System.Comparison`1[int]:Invoke(int,int):int:this - ; gcrRegs -[rdi r13] - mov esi, eax - jmp SHORT G_M64750_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 241, prolog size 16, PerfScore 47.51, instruction count 75, allocated bytes for code 241 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 237, prolog size 16, PerfScore 46.96, instruction count 75, allocated bytes for code 237 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

-4 (-1.66%) : 127652.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -26,7 +26,7 @@ ;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.IntStruct> ;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-; V17 tmp12 [V17,T08] ( 4, 3 ) int -> rax "Inline return value spill temp"
+; V17 tmp12 [V17,T08] ( 4, 3.00) int -> rax "Inline return value spill temp"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp14 [V19,T04] ( 7, 4.67) byref -> r14 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V20 tmp15 [V20,T06] ( 3, 3 ) int -> r12 single-def "field V00._length (fldOffset=0x8)" P-INDEP @@ -55,56 +55,50 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=30 bbWeight=1 PerfScore 8.75 G_M64750_IG02: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref cmp ebx, r15d
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=9 bbWeight=1 PerfScore 1.25 G_M64750_IG03: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz cmp ebx, r12d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov edi, ebx mov esi, dword ptr [r14+4*rdi] cmp r15d, r12d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov edi, r15d mov edx, dword ptr [r14+4*rdi] mov rdi, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this cmp qword ptr [r13+0x18], rdi
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x20] mov eax, dword ptr [rdi+0x08] cmp esi, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov ecx, esi mov ecx, dword ptr [rdi+4*rcx+0x10] cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, edx mov edi, dword ptr [rdi+4*rax+0x10] ; gcrRegs -[rdi] cmp ecx, edi
- jge SHORT G_M64750_IG05 - ;; size=86 bbWeight=1 PerfScore 25.50 -G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+ jge SHORT G_M64750_IG09 + ;; size=82 bbWeight=1 PerfScore 25.50 +G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
; gcrRegs -[r13] mov eax, -1
- jmp SHORT G_M64750_IG06 - ;; size=7 bbWeight=0.63 PerfScore 1.43 -G_M64750_IG05: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - xor eax, eax - cmp ecx, edi - setg al - ;; size=7 bbWeight=0.37 PerfScore 0.55 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
+ ;; size=5 bbWeight=0.63 PerfScore 0.16 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref
sub esi, edx test eax, eax cmovne esi, eax ;; size=7 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
test esi, esi
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r14] add rsp, 8 pop rbx @@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M64750_IG09: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref, isz
; byrRegs +[r14] mov edi, ebx mov edi, dword ptr [r14+4*rdi] @@ -125,13 +119,28 @@ G_M64750_IG09: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=000 mov dword ptr [r14+4*rsi], eax mov esi, r15d mov dword ptr [r14+4*rsi], edi
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=28 bbWeight=0.42 PerfScore 3.76
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz + xor eax, eax + cmp ecx, edi + setg al + jmp SHORT G_M64750_IG05 + ;; size=9 bbWeight=0.37 PerfScore 1.28 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz + ; gcrRegs +[r13] + mov rdi, gword ptr [r13+0x08] + ; gcrRegs +[rdi] + call [r13+0x18]System.Comparison`1[int]:Invoke(int,int):int:this + ; gcrRegs -[rdi r13] + mov esi, eax + jmp SHORT G_M64750_IG06 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r14] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref
; gcrRegs +[r13] ; byrRegs +[r14] mov rdi, 0xD1FFAB1E @@ -142,16 +151,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, ; gcrRegs -[rsi rdi] jmp G_M64750_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=4000 {r14}, byref, isz - mov rdi, gword ptr [r13+0x08] - ; gcrRegs +[rdi] - call [r13+0x18]System.Comparison`1[int]:Invoke(int,int):int:this - ; gcrRegs -[rdi r13] - mov esi, eax - jmp SHORT G_M64750_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 241, prolog size 16, PerfScore 47.48, instruction count 75, allocated bytes for code 241 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 237, prolog size 16, PerfScore 46.95, instruction count 75, allocated bytes for code 237 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

+3 (+1.73%) : 115713.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)

@@ -54,43 +54,37 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=30 bbWeight=1 PerfScore 8.75 G_M8313_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz cmp ebx, r15d
- je SHORT G_M8313_IG10
+ je SHORT G_M8313_IG11
;; size=5 bbWeight=1 PerfScore 1.25 G_M8313_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz cmp ebx, r12d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov edi, ebx lea rbx, bword ptr [r13+4*rdi] ; byrRegs +[rbx] mov esi, dword ptr [rbx] cmp r15d, r12d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov edi, r15d lea r15, bword ptr [r13+4*rdi] ; byrRegs +[r15] mov edx, dword ptr [r15] mov rdi, 0xD1FFAB1E ; code for System.Collections.Sort`1+<>c[System.Collections.IntStruct]:<Array_Comparison>b__13_0(System.Collections.IntStruct,System.Collections.IntStruct):int:this cmp qword ptr [r14+0x18], rdi
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp esi, edx
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=50 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
; gcrRegs -[r14] ; byrRegs -[r13] mov eax, -1
- jmp SHORT G_M8313_IG06 - ;; size=7 bbWeight=0.64 PerfScore 1.43 -G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref - xor eax, eax - cmp esi, edx - setg al - ;; size=7 bbWeight=0.36 PerfScore 0.54 -G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=5 bbWeight=0.64 PerfScore 0.16 +G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test eax, eax
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=4 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx r15] add rsp, 8 pop rbx @@ -101,19 +95,33 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M8313_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15] mov edi, dword ptr [rbx] mov esi, dword ptr [r15] mov dword ptr [rbx], esi mov dword ptr [r15], edi
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=12 bbWeight=0.46 PerfScore 3.68
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz + xor eax, eax + cmp esi, edx + setg al + jmp SHORT G_M8313_IG05 + ;; size=9 bbWeight=0.36 PerfScore 1.27 +G_M8313_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz + ; gcrRegs +[r14] + mov rdi, gword ptr [r14+0x08] + ; gcrRegs +[rdi] + call [r14+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this + ; gcrRegs -[rdi r14] + jmp SHORT G_M8313_IG05 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx r15] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref
; gcrRegs +[r14] ; byrRegs +[r13] mov rdi, 0xD1FFAB1E @@ -122,18 +130,10 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, b ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi rdi]
- jmp SHORT G_M8313_IG03 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M8313_IG11: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz - ; byrRegs -[r13] +[rbx r15] - mov rdi, gword ptr [r14+0x08] - ; gcrRegs +[rdi] - call [r14+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this - ; gcrRegs -[rdi r14] - jmp SHORT G_M8313_IG06 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M8313_IG03 + ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 16, PerfScore 37.65, instruction count 58, allocated bytes for code 173 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 176, prolog size 16, PerfScore 37.11, instruction count 58, allocated bytes for code 176 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+3 (+1.73%) : 109214.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)

@@ -54,43 +54,37 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=30 bbWeight=1 PerfScore 8.75 G_M8313_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz cmp ebx, r15d
- je SHORT G_M8313_IG10
+ je SHORT G_M8313_IG11
;; size=5 bbWeight=1 PerfScore 1.25 G_M8313_IG03: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz cmp ebx, r12d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov edi, ebx lea rbx, bword ptr [r13+4*rdi] ; byrRegs +[rbx] mov esi, dword ptr [rbx] cmp r15d, r12d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov edi, r15d lea r15, bword ptr [r13+4*rdi] ; byrRegs +[r15] mov edx, dword ptr [r15] mov rdi, 0xD1FFAB1E ; code for System.Collections.Sort`1+ComparableComparerClass[System.Collections.IntStruct]:Compare(System.Collections.IntStruct,System.Collections.IntStruct):int:this cmp qword ptr [r14+0x18], rdi
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp esi, edx
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=50 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
; gcrRegs -[r14] ; byrRegs -[r13] mov eax, -1
- jmp SHORT G_M8313_IG06 - ;; size=7 bbWeight=0.63 PerfScore 1.43 -G_M8313_IG05: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref - xor eax, eax - cmp esi, edx - setg al - ;; size=7 bbWeight=0.37 PerfScore 0.55 -G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+ ;; size=5 bbWeight=0.63 PerfScore 0.16 +G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
test eax, eax
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=4 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbx r15] add rsp, 8 pop rbx @@ -101,19 +95,33 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M8313_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, gcvars, byref, isz
; byrRegs +[rbx r15] mov edi, dword ptr [rbx] mov esi, dword ptr [r15] mov dword ptr [rbx], esi mov dword ptr [r15], edi
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=12 bbWeight=0.46 PerfScore 3.70
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz + xor eax, eax + cmp esi, edx + setg al + jmp SHORT G_M8313_IG05 + ;; size=9 bbWeight=0.37 PerfScore 1.28 +G_M8313_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz + ; gcrRegs +[r14] + mov rdi, gword ptr [r14+0x08] + ; gcrRegs +[rdi] + call [r14+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this + ; gcrRegs -[rdi r14] + jmp SHORT G_M8313_IG05 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx r15] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref, isz
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, byref
; gcrRegs +[r14] ; byrRegs +[r13] mov rdi, 0xD1FFAB1E @@ -122,18 +130,10 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=2000 {r13}, b ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi rdi]
- jmp SHORT G_M8313_IG03 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M8313_IG11: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=8008 {rbx r15}, byref, isz - ; byrRegs -[r13] +[rbx r15] - mov rdi, gword ptr [r14+0x08] - ; gcrRegs +[rdi] - call [r14+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this - ; gcrRegs -[rdi r14] - jmp SHORT G_M8313_IG06 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M8313_IG03 + ;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 173, prolog size 16, PerfScore 37.68, instruction count 58, allocated bytes for code 173 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 176, prolog size 16, PerfScore 37.14, instruction count 58, allocated bytes for code 176 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+5 (+2.33%) : 142377.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)

@@ -15,7 +15,7 @@ ; V03 loc0 [V03,T05] ( 4, 4 ) ref -> rax class-hnd single-def <<unknown class>> ;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 5, 3 ) int -> r13 "guarded devirt return temp"
+; V06 tmp1 [V06,T07] ( 4, 3 ) int -> r13 "guarded devirt return temp"
; V07 tmp2 [V07,T06] ( 3, 4 ) ref -> rdi single-def "guarded devirt arg temp" ; V08 tmp3 [V08,T03] ( 4, 4.03) int -> rsi "guarded devirt arg temp" ; V09 tmp4 [V09,T04] ( 4, 4.03) int -> rdx "guarded devirt arg temp" @@ -27,7 +27,7 @@ ; ; Lcl frame size = 0
-G_M58236_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M58236_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push r15 push r14 @@ -46,35 +46,27 @@ G_M58236_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rdi] mov edx, dword ptr [rax+0x08] cmp r15d, edx
- jae SHORT G_M58236_IG08
+ jae G_M58236_IG10
mov esi, r15d mov esi, dword ptr [rax+4*rsi+0x10] cmp r14d, edx
- jae SHORT G_M58236_IG08
+ jae G_M58236_IG10
mov edx, r14d mov edx, dword ptr [rax+4*rdx+0x10] mov rax, 0xD1FFAB1E ; System.Collections.Generic.GenericComparer`1[int] ; gcrRegs -[rax] cmp qword ptr [rdi], rax
- jne SHORT G_M58236_IG09
+ jne SHORT G_M58236_IG07
cmp esi, edx
- jge SHORT G_M58236_IG04 - ;; size=54 bbWeight=1 PerfScore 18.50 -G_M58236_IG03: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M58236_IG06 + ;; size=62 bbWeight=1 PerfScore 18.50 +G_M58236_IG03: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov r13d, -1
- jmp SHORT G_M58236_IG05 - ;; size=8 bbWeight=0.98 PerfScore 2.22 -G_M58236_IG04: ; bbWeight=0.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor r13d, r13d - cmp esi, edx - setg r13b - ;; size=9 bbWeight=0.02 PerfScore 0.02 -G_M58236_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=0.98 PerfScore 0.25 +G_M58236_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
- je SHORT G_M58236_IG10 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M58236_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M58236_IG11
movzx rax, byte ptr [rbx+0x28] xor edi, edi test r13d, r13d @@ -84,8 +76,8 @@ G_M58236_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi mov eax, esi cmovne eax, edx
- ;; size=30 bbWeight=1 PerfScore 4.75 -G_M58236_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=35 bbWeight=1 PerfScore 6.00 +G_M58236_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -93,34 +85,21 @@ G_M58236_IG07: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=9 bbWeight=1 PerfScore 3.50
-G_M58236_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx] - call CORINFO_HELP_RNGCHKFAIL - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M58236_IG09: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi]
+G_M58236_IG06: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + xor r13d, r13d + cmp esi, edx + setg r13b + jmp SHORT G_M58236_IG04 + ;; size=11 bbWeight=0.02 PerfScore 0.05 +G_M58236_IG07: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdi] mov r13d, eax
- test r13d, r13d - jne SHORT G_M58236_IG06 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M58236_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - cmp gword ptr [rbx+0x18], 0 - jne SHORT G_M58236_IG12 - mov eax, r15d - sub eax, r14d - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M58236_IG11: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M58236_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M58236_IG04 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M58236_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] mov esi, r15d @@ -131,7 +110,25 @@ G_M58236_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { ; gcrRegs -[rbx rdi] nop ;; size=21 bbWeight=0 PerfScore 0.00
-G_M58236_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M58236_IG09: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M58236_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M58236_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx] + cmp gword ptr [rbx+0x18], 0 + jne SHORT G_M58236_IG08 + mov eax, r15d + sub eax, r14d + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M58236_IG12: ; bbWeight=0, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -140,7 +137,7 @@ G_M58236_IG13: ; bbWeight=0, epilog, nogc, extend ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 215, prolog size 13, PerfScore 36.49, instruction count 76, allocated bytes for code 215 (MethodHash=00a21c83) for method System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
+; Total bytes of code 220, prolog size 13, PerfScore 34.55, instruction count 75, allocated bytes for code 220 (MethodHash=00a21c83) for method System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-19 (-13.57%) : 287586.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)

@@ -2,20 +2,22 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> r14 single-def -; V01 arg1 [V01,T01] ( 4, 3 ) long -> r15 single-def -; V02 arg2 [V02,T00] ( 10, 6.82) ref -> rbx class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r15 single-def +; V01 arg1 [V01,T02] ( 3, 3 ) long -> r14 single-def +; V02 arg2 [V02,T00] ( 7, 7 ) ref -> rbx class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> rsi "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> rsi "CSE - aggressive"
; ; Lcl frame size = 8 @@ -26,47 +28,17 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx push rax lea rbp, [rsp+0x20]
- mov r14, rdi - ; byrRegs +[r14] - mov r15, rsi
+ mov r15, rdi + ; byrRegs +[r15] + mov r14, rsi
mov rbx, rdx ; gcrRegs +[rbx] ;; size=21 bbWeight=1 PerfScore 6.25
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
test rbx, rbx
- je SHORT G_M14814_IG06
+ jne SHORT G_M14814_IG04
;; size=5 bbWeight=1 PerfScore 1.25
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - mov rdi, r15 - mov rsi, rbx - ; gcrRegs +[rsi] - call <unknown method> - ; gcrRegs -[rbx rsi] +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - test rbx, rbx - je SHORT G_M14814_IG07 - ;; size=19 bbWeight=0.99 PerfScore 2.98 -G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rax] - mov rdi, r14 - ; byrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - ;; size=6 bbWeight=0.82 PerfScore 0.41 -G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend - add rsp, 8 - pop rbx - pop r14 - pop r15 - pop rbp - jmp <unknown method> - ; gcr arg pop 0 - ;; size=15 bbWeight=0.82 PerfScore 3.48 -G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, gcvars, byref, isz - ; gcrRegs -[rsi] - ; byrRegs -[rdi]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -74,7 +46,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- mov rdi, r15
+ ;; size=19 bbWeight=0.80 PerfScore 2.80 +G_M14814_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz + mov rdi, r14
mov rsi, rbx ; gcrRegs +[rsi] call <unknown method> @@ -83,11 +57,24 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000 mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- jne SHORT G_M14814_IG04 - ;; size=38 bbWeight=0.01 PerfScore 0.04 -G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx] - ; byrRegs -[r14]
+ je SHORT G_M14814_IG06 + mov rdi, r15 + ; byrRegs +[rdi] + mov rsi, rbx + ; gcrRegs +[rsi] + ;; size=25 bbWeight=1 PerfScore 3.50 +G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r14 + pop r15 + pop rbp + jmp <unknown method> + ; gcr arg pop 0 + ;; size=15 bbWeight=1 PerfScore 4.25 +G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rbx rsi] + ; byrRegs -[rdi r15]
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -107,7 +94,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 21, PerfScore 14.41, instruction count 42, allocated bytes for code 140 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 121, prolog size 21, PerfScore 18.05, instruction count 36, allocated bytes for code 121 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info:

-20 (-12.20%) : 287466.dasm - System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)

@@ -2,19 +2,22 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 2
; No matching PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Diagnostics.Tracing.XplatEventLogger> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.XplatEventLogger>
+; V02 tmp1 [V02,T00] ( 3, 1.62) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.XplatEventLogger>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ;* V04 tmp3 [V04 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V06 PSPSym [V06,T00] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym"
+; V06 PSPSym [V06,T01] ( 1, 1 ) long -> [rbp-0x10] do-not-enreg[V] "PSPSym" +;* V07 cse0 [V07,T02] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 8 @@ -27,21 +30,19 @@ G_M49747_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=12 bbWeight=1 PerfScore 4.50 G_M49747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz test byte ptr [(reloc)], 1 ; global ptr
- je SHORT G_M49747_IG05
+ je SHORT G_M49747_IG06
;; size=9 bbWeight=1 PerfScore 4.00 G_M49747_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp byte ptr [(reloc)], 0 ; data for <unknown class>:<unknown field>
- jne SHORT G_M49747_IG06
+ jne SHORT G_M49747_IG07
;; size=9 bbWeight=1 PerfScore 4.00
-G_M49747_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M49747_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M49747_IG06 - mov rdi, 0xD1FFAB1E - mov esi, 0x91F - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - ; gcr arg pop 0
+ je SHORT G_M49747_IG07 + ;; size=9 bbWeight=0.52 PerfScore 1.17 +G_M49747_IG05: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov byte ptr [(reloc)], 1 ; data for <unknown class>:<unknown field> mov rdi, 0xD1FFAB1E ; System.Diagnostics.Tracing.XplatEventLogger call CORINFO_HELP_NEWSFAST @@ -54,9 +55,9 @@ G_M49747_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [System.Diagnostics.Tracing.EventListener:.ctor():this] ; gcrRegs -[rax rdi] ; gcr arg pop 0
- jmp SHORT G_M49747_IG08 - ;; size=65 bbWeight=0 PerfScore 0.00 -G_M49747_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M49747_IG09 + ;; size=36 bbWeight=0.27 PerfScore 2.10 +G_M49747_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] mov rdi, 0xD1FFAB1E mov esi, 0x91F @@ -64,28 +65,28 @@ G_M49747_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcr arg pop 0 jmp SHORT G_M49747_IG03 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M49747_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49747_IG07: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor rax, rax ; gcrRegs +[rax]
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M49747_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.73 PerfScore 0.18 +G_M49747_IG08: ; bbWeight=0.73, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00 -G_M49747_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=0.73 PerfScore 1.64 +G_M49747_IG09: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx] mov rax, rbx ; gcrRegs +[rax]
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M49747_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=3 bbWeight=0.27 PerfScore 0.07 +G_M49747_IG10: ; bbWeight=0.27, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00 -G_M49747_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=0.27 PerfScore 0.61 +G_M49747_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs -[rax rbx] push rbp push rbx @@ -94,17 +95,17 @@ G_M49747_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp], rbp lea rbp, [rbp+0x10] ;; size=14 bbWeight=0 PerfScore 0.00
-G_M49747_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - lea rax, G_M49747_IG06
+G_M49747_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + lea rax, G_M49747_IG07
;; size=7 bbWeight=0 PerfScore 0.00
-G_M49747_IG12: ; bbWeight=0, funclet epilog, nogc, extend
+G_M49747_IG13: ; bbWeight=0, funclet epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 164, prolog size 12, PerfScore 12.50, instruction count 47, allocated bytes for code 164 (MethodHash=e7f73dac) for method System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 18.27, instruction count 44, allocated bytes for code 144 (MethodHash=e7f73dac) for method System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
; ============================================================ Unwind Info: @@ -135,4 +136,4 @@ Unwind Info: CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) *************** EH table for System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M49747_IG02..G_M49747_IG06) handled by [G_M49747_IG10..END) (class: 2000052)
+EH#0: try [G_M49747_IG02..G_M49747_IG07) handled by [G_M49747_IG11..END) (class: 2000052)
-28 (-10.37%) : 287568.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
@@ -2,21 +2,23 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 1
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 22 ) byref -> r14 this single-def -; V01 arg1 [V01,T01] ( 5,269 ) ref -> rbx class-hnd single-def <System.Object> -; V02 arg2 [V02,T02] ( 8,238 ) int -> r15 single-def -; V03 loc0 [V03,T03] ( 4,146.00) long -> rcx
+; V00 this [V00,T02] ( 3, 3 ) byref -> r14 this single-def +; V01 arg1 [V01,T01] ( 5, 4.32) ref -> r15 class-hnd single-def <System.Object> +; V02 arg2 [V02,T00] ( 7, 6.80) int -> rbx single-def +; V03 loc0 [V03,T04] ( 4, 4 ) long -> rdi
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V06 tmp2 [V06,T06] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V07 tmp3 [V07,T00] ( 6,308 ) long -> rax "Inline stloc first use temp" -; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> rbx single-def "argument with side effect"
+; V07 tmp3 [V07,T03] ( 5, 4.80) long -> rax "Inline stloc first use temp" +; V08 tmp4 [V08,T07] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V09 tmp5 [V09,T08] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V10 tmp6 [V10,T09] ( 2, 0 ) ref -> r15 single-def "argument with side effect" ; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect" @@ -32,53 +34,56 @@ G_M25844_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, lea rbp, [rsp+0x20] mov r14, rdi ; byrRegs +[r14]
- mov rbx, rsi - ; gcrRegs +[rbx] - mov r15d, edx - ;; size=21 bbWeight=1 PerfScore 6.25 -G_M25844_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - cmp r15d, 3 - ja SHORT G_M25844_IG09 - ;; size=6 bbWeight=1 PerfScore 1.25 -G_M25844_IG03: ; bbWeight=18, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - cmp r15d, 3 - jne SHORT G_M25844_IG05 - ;; size=6 bbWeight=18 PerfScore 22.50 -G_M25844_IG04: ; bbWeight=176, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz - mov rdi, rbx
+ mov r15, rsi + ; gcrRegs +[r15] + mov ebx, edx + ;; size=20 bbWeight=1 PerfScore 6.25 +G_M25844_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref, isz + cmp ebx, 3 + ja SHORT G_M25844_IG08 + cmp ebx, 3 + jne SHORT G_M25844_IG04 + ;; size=10 bbWeight=1 PerfScore 2.50 +G_M25844_IG03: ; bbWeight=0.52, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref + mov rdi, r15
; gcrRegs +[rdi] call [System.Runtime.InteropServices.Marshal:IsPinnable(System.Object):ubyte] ; gcrRegs -[rdi] test eax, eax
- je SHORT G_M25844_IG10 - ;; size=13 bbWeight=176 PerfScore 792.00 -G_M25844_IG05: ; bbWeight=91, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref - mov rdi, rbx
+ je G_M25844_IG09 + ;; size=17 bbWeight=0.52 PerfScore 2.34 +G_M25844_IG04: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref, isz + mov rdi, r15
; gcrRegs +[rdi]
- mov esi, r15d
+ mov esi, ebx
call <unknown method> ; gcrRegs -[rdi] test rax, rax
- je G_M25844_IG11 - ;; size=20 bbWeight=91 PerfScore 250.25 -G_M25844_IG06: ; bbWeight=126.00, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rbx] - mov rcx, rax - cmp r15d, 3 - je G_M25844_IG12 - ;; size=13 bbWeight=126.00 PerfScore 189.00 -G_M25844_IG07: ; bbWeight=20, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - mov qword ptr [r14], rcx - ;; size=3 bbWeight=20 PerfScore 20.00 -G_M25844_IG08: ; bbWeight=20, epilog, nogc, extend
+ jne SHORT G_M25844_IG06 + ;; size=15 bbWeight=1 PerfScore 2.75 +G_M25844_IG05: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=4000 {r14}, byref + mov rdi, r15 + ; gcrRegs +[rdi] + mov esi, ebx + call [<unknown method>] + ; gcrRegs -[rdi r15] + ;; size=11 bbWeight=0.80 PerfScore 2.80 +G_M25844_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + mov rdi, rax + or rax, 1 + cmp ebx, 3 + cmove rdi, rax + mov qword ptr [r14], rdi + ;; size=17 bbWeight=1 PerfScore 2.00 +G_M25844_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=20 PerfScore 65.00 -G_M25844_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M25844_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r14] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -104,50 +109,34 @@ G_M25844_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_THROW ; gcrRegs -[rbx rdi] ;; size=70 bbWeight=0 PerfScore 0.00
-G_M25844_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25844_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax]
- mov r14, rax - ; gcrRegs +[r14] - call [<unknown method>]
mov rbx, rax ; gcrRegs +[rbx]
+ call [<unknown method>] + mov r15, rax + ; gcrRegs +[r15]
mov edi, 174 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax ; gcrRegs +[rdx]
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
- mov rdi, r14 - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rax rdx rbx rsi rdi] - mov rdi, r14 - ; gcrRegs +[rdi] - call CORINFO_HELP_THROW - ; gcrRegs -[rdi r14] - ;; size=70 bbWeight=0 PerfScore 0.00 -G_M25844_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref - ; gcrRegs +[rbx] - ; byrRegs +[r14]
mov rdi, rbx ; gcrRegs +[rdi]
- mov esi, r15d
call [<unknown method>]
+ ; gcrRegs -[rax rdx rsi rdi r15] + mov rdi, rbx + ; gcrRegs +[rdi] + call CORINFO_HELP_THROW
; gcrRegs -[rbx rdi]
- mov rcx, rax - cmp r15d, 3 - jne G_M25844_IG07 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M25844_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref - mov rcx, rax - or rcx, 1 - jmp G_M25844_IG07 - ;; size=12 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=71 bbWeight=0 PerfScore 0.00
-; Total bytes of code 270, prolog size 12, PerfScore 1346.25, instruction count 69, allocated bytes for code 270 (MethodHash=946a9b0b) for method System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
+; Total bytes of code 242, prolog size 12, PerfScore 21.89, instruction count 65, allocated bytes for code 242 (MethodHash=946a9b0b) for method System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
; ============================================================ Unwind Info:

+37 (+10.72%) : 287469.dasm - System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)

@@ -2,22 +2,24 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 51
; No matching PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 4 ) int -> rdi single-def -; V01 arg1 [V01,T02] ( 5, 3.92) ubyte -> rsi single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) int -> rdi single-def +; V01 arg1 [V01,T01] ( 5, 2.75) ubyte -> rsi single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V05 tmp2 [V05,T07] ( 2, 0 ) int -> rbx -; V06 tmp3 [V06,T04] ( 3, 0 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.LazyHelper> -; V07 tmp4 [V07,T00] ( 6, 7.22) ref -> rax "Single return block return value" -; V08 tmp5 [V08,T05] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V09 tmp6 [V09,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V04 tmp1 [V04,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V05 tmp2 [V05,T04] ( 2, 0.50) int -> rbx +; V06 tmp3 [V06,T03] ( 3, 1.50) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.LazyHelper> +; V07 tmp4 [V07,T02] ( 6, 3 ) ref -> rax "Single return block return value" +; V08 tmp5 [V08,T06] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V09 tmp6 [V09,T07] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; ; Lcl frame size = 0 @@ -29,48 +31,66 @@ G_M40543_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=9 bbWeight=1 PerfScore 3.50 G_M40543_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp edi, 2
- ja G_M40543_IG10 - mov eax, edi - lea rdi, [reloc @RWD00] - mov edi, dword ptr [rdi+4*rax]
+ ja G_M40543_IG16 + mov edi, edi + lea rax, [reloc @RWD00] + mov eax, dword ptr [rax+4*rdi]
lea rcx, G_M40543_IG02
- add rdi, rcx - jmp rdi
+ add rax, rcx + jmp rax
;; size=33 bbWeight=1 PerfScore 7.25
-G_M40543_IG03: ; bbWeight=2.16, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M40543_IG03: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[rax] pop rbx pop r15 pop rbp ret
- ;; size=5 bbWeight=2.16 PerfScore 5.39 -G_M40543_IG04: ; bbWeight=1.92, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.75 PerfScore 1.88 +G_M40543_IG04: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] test sil, sil
- je SHORT G_M40543_IG07 - ;; size=5 bbWeight=1.92 PerfScore 2.40 -G_M40543_IG05: ; bbWeight=1.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M40543_IG10 + ;; size=5 bbWeight=0.25 PerfScore 0.31 +G_M40543_IG05: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
test byte ptr [(reloc)], 1 ; global ptr
- je G_M40543_IG13 - ;; size=13 bbWeight=1.25 PerfScore 5.02 -G_M40543_IG06: ; bbWeight=1.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rax]
+ je G_M40543_IG17 + ;; size=13 bbWeight=0.13 PerfScore 0.52 +G_M40543_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rsi]
; gcrRegs +[rax] jmp SHORT G_M40543_IG03
- ;; size=15 bbWeight=1.25 PerfScore 5.33 -G_M40543_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.13 PerfScore 0.55 +G_M40543_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ test sil, sil + jne SHORT G_M40543_IG14 + ;; size=5 bbWeight=0.25 PerfScore 0.31 +G_M40543_IG08: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test byte ptr [(reloc)], 1 ; global ptr
- je G_M40543_IG14 - ;; size=13 bbWeight=0.20 PerfScore 0.78 -G_M40543_IG08: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M40543_IG12 + ;; size=9 bbWeight=0.13 PerfScore 0.52 +G_M40543_IG09: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + jmp G_M40543_IG19 + ;; size=5 bbWeight=0.98 PerfScore 1.96 +G_M40543_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + test byte ptr [(reloc)], 1 ; global ptr + je G_M40543_IG18 + ;; size=13 bbWeight=0.12 PerfScore 0.48 +G_M40543_IG11: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] jmp SHORT G_M40543_IG03
- ;; size=15 bbWeight=0.20 PerfScore 0.83 -G_M40543_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=15 bbWeight=0.12 PerfScore 0.51 +G_M40543_IG12: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + jmp SHORT G_M40543_IG03 + ;; size=15 bbWeight=0.13 PerfScore 0.55 +G_M40543_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov ebx, 7 mov edi, 8 @@ -80,9 +100,20 @@ G_M40543_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] mov dword ptr [rax+0x10], ebx
- jmp SHORT G_M40543_IG03 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M40543_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M40543_IG03 + ;; size=39 bbWeight=0.25 PerfScore 1.31 +G_M40543_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + test byte ptr [(reloc)], 1 ; global ptr + je G_M40543_IG20 + ;; size=13 bbWeight=0.12 PerfScore 0.48 +G_M40543_IG15: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + jmp G_M40543_IG03 + ;; size=18 bbWeight=0.12 PerfScore 0.51 +G_M40543_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -108,46 +139,36 @@ G_M40543_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call CORINFO_HELP_THROW ; gcrRegs -[rbx rdi] ;; size=70 bbWeight=0 PerfScore 0.00
-G_M40543_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test sil, sil - jne SHORT G_M40543_IG12 - mov rdi, 0xD1FFAB1E - mov esi, 298 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - jmp G_M40543_IG03 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M40543_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E - mov esi, 298 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rax, gword ptr [rdi] - ; gcrRegs +[rax] - jmp G_M40543_IG03 - ;; size=38 bbWeight=0 PerfScore 0.00 -G_M40543_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+G_M40543_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E mov esi, 298 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M40543_IG06 ;; size=25 bbWeight=0 PerfScore 0.00
-G_M40543_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40543_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E mov esi, 298 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp G_M40543_IG08
+ jmp G_M40543_IG11
;; size=25 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M40543_IG11 - G_M40543_IG02 - dd G_M40543_IG04 - G_M40543_IG02 - dd G_M40543_IG09 - G_M40543_IG02
+G_M40543_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdi, 0xD1FFAB1E + mov esi, 298 + call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE + jmp G_M40543_IG12 + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M40543_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdi, 0xD1FFAB1E + mov esi, 298 + call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE + jmp G_M40543_IG15 + ;; size=25 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M40543_IG04 - G_M40543_IG02 + dd G_M40543_IG07 - G_M40543_IG02 + dd G_M40543_IG13 - G_M40543_IG02
-; Total bytes of code 345, prolog size 9, PerfScore 30.51, instruction count 72, allocated bytes for code 345 (MethodHash=437961a0) for method System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
+; Total bytes of code 382, prolog size 9, PerfScore 20.65, instruction count 79, allocated bytes for code 382 (MethodHash=437961a0) for method System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
; ============================================================ Unwind Info:

+24 (+13.26%) : 287547.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (FullOpts)

@@ -2,25 +2,29 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 112
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 5, 29.84) ref -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 8, 3122.62) ref -> rbx class-hnd single-def <System.__Canon[]> -; V02 loc0 [V02,T07] ( 3, 3.62) ref -> r14 class-hnd single-def <System.__Canon[]> -; V03 loc1 [V03,T06] ( 4, 21.61) ref -> r14 class-hnd single-def <System.__Canon[]> -; V04 loc2 [V04,T05] ( 5, 21.98) int -> r13 -; V05 loc3 [V05,T02] ( 4, 3112.71) ref -> r12 class-hnd <System.__Canon> -; V06 loc4 [V06,T03] ( 6, 3093.79) int -> [rbp-0x2C] -;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> -;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp2 [V10,T00] ( 3,18468 ) ref -> rdi "argument with side effect"
+; V00 this [V00,T08] ( 5, 4 ) ref -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 7, 553.71) ref -> rbx class-hnd single-def <System.__Canon[]> +; V02 loc0 [V02,T09] ( 3, 2.80) ref -> r14 class-hnd single-def <System.__Canon[]> +; V03 loc1 [V03,T07] ( 3, 31.92) ref -> r14 class-hnd single-def <System.__Canon[]> +; V04 loc2 [V04,T05] ( 5, 132.17) int -> r13 +; V05 loc3 [V05,T03] ( 4, 584.06) ref -> [rbp-0x38] class-hnd spill-single-def <System.__Canon> +; V06 loc4 [V06,T01] ( 6,2273.92) int -> [rbp-0x2C] +;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> +;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp2 [V10,T00] ( 3,3101.78) ref -> rdi "argument with side effect" +; V11 cse0 [V11,T02] ( 3, 628.97) int -> [rbp-0x30] spill-single-def "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 35.28) int -> r12 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -29,20 +33,71 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- push rax - lea rbp, [rsp+0x30]
+ sub rsp, 24 + lea rbp, [rsp+0x40]
mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=25 bbWeight=1 PerfScore 7.25
G_M50755_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov r14, gword ptr [r15+0x08] ; gcrRegs +[r14] test r14, r14
- jne SHORT G_M50755_IG05
+ je SHORT G_M50755_IG09
;; size=9 bbWeight=1 PerfScore 3.25
-G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + xor r13d, r13d + mov r12d, dword ptr [r14+0x08] + test r12d, r12d + jle G_M50755_IG13 + ;; size=16 bbWeight=0.80 PerfScore 2.80 +G_M50755_IG04: ; bbWeight=30.32, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov edi, r13d + mov rax, gword ptr [r14+8*rdi+0x10] + ; gcrRegs +[rax] + mov gword ptr [rbp-0x38], rax + ; GC ptr vars +{V05} + test rax, rax + je SHORT G_M50755_IG13 + ;; size=17 bbWeight=30.32 PerfScore 136.42 +G_M50755_IG05: ; bbWeight=27.28, gcVars=0000000000000008 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + xor ecx, ecx + mov edx, dword ptr [rbx+0x08] + mov dword ptr [rbp-0x30], edx + test edx, edx + jle SHORT G_M50755_IG12 + ;; size=12 bbWeight=27.28 PerfScore 122.78 +G_M50755_IG06: ; bbWeight=516.96, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov dword ptr [rbp-0x2C], ecx + mov edi, ecx + mov rdi, gword ptr [rbx+8*rdi+0x10] + ; gcrRegs +[rdi] + mov rsi, rax + ; gcrRegs +[rsi] + mov r8, qword ptr [rdi] + mov r8, qword ptr [r8+0x48] + call [r8+0x20]<unknown method> + ; gcrRegs -[rax rsi rdi] + ; gcr arg pop 0 + test eax, eax + jne SHORT G_M50755_IG11 + ;; size=28 bbWeight=516.96 PerfScore 6074.33 +G_M50755_IG07: ; bbWeight=574.40, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + mov ecx, dword ptr [rbp-0x2C] + inc ecx + mov esi, dword ptr [rbp-0x30] + cmp esi, ecx + mov rax, gword ptr [rbp-0x38] + ; gcrRegs +[rax] + jg SHORT G_M50755_IG06 + ;; size=16 bbWeight=574.40 PerfScore 2584.82 +G_M50755_IG08: ; bbWeight=1.80, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] + ; GC ptr vars -{V05} + jmp SHORT G_M50755_IG12 + ;; size=2 bbWeight=1.80 PerfScore 3.59 +G_M50755_IG09: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] lea rdi, bword ptr [r15+0x08] ; byrRegs +[rdi] @@ -52,9 +107,9 @@ G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rbx rsi r15] ; byrRegs -[rdi] nop
- ;; size=13 bbWeight=0.80 PerfScore 1.61 -G_M50755_IG04: ; bbWeight=0.80, epilog, nogc, extend - add rsp, 8
+ ;; size=13 bbWeight=0.20 PerfScore 0.40 +G_M50755_IG10: ; bbWeight=0.20, epilog, nogc, extend + add rsp, 24
pop rbx pop r12 pop r13 @@ -62,56 +117,26 @@ G_M50755_IG04: ; bbWeight=0.80, epilog, nogc, extend pop r15 pop rbp ret
- ;; size=15 bbWeight=0.80 PerfScore 3.42 -G_M50755_IG05: ; bbWeight=1.62, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.20 PerfScore 0.85 +G_M50755_IG11: ; bbWeight=6.46, gcVars=0000000000000008 {V05}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15]
- xor r13d, r13d - cmp dword ptr [r14+0x08], 0 - jle SHORT G_M50755_IG11 - ;; size=10 bbWeight=1.62 PerfScore 6.91 -G_M50755_IG06: ; bbWeight=17.36, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz - mov edi, r13d - mov r12, gword ptr [r14+8*rdi+0x10] - ; gcrRegs +[r12] - test r12, r12 - je SHORT G_M50755_IG11 - ;; size=13 bbWeight=17.36 PerfScore 60.75 -G_M50755_IG07: ; bbWeight=15.79, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz - xor eax, eax - cmp dword ptr [rbx+0x08], 0 - jle SHORT G_M50755_IG10 - ;; size=8 bbWeight=15.79 PerfScore 67.09 -G_M50755_IG08: ; bbWeight=3078, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz - mov dword ptr [rbp-0x2C], eax - mov edi, eax - mov rdi, gword ptr [rbx+8*rdi+0x10] - ; gcrRegs +[rdi] - mov rsi, r12 - ; gcrRegs +[rsi] - mov rcx, qword ptr [rdi] - mov rcx, qword ptr [rcx+0x48] - call [rcx+0x20]<unknown method> - ; gcrRegs -[rsi rdi] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M50755_IG13 - ;; size=27 bbWeight=3078 PerfScore 36166.50 -G_M50755_IG09: ; bbWeight=0, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ ; GC ptr vars +{V03 V05}
movsxd rsi, dword ptr [rbp-0x2C] mov rdi, rbx ; gcrRegs +[rdi]
- mov rdx, r12
+ mov rdx, gword ptr [rbp-0x38]
; gcrRegs +[rdx]
+ ; GC ptr vars -{V03 V05}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rdx rdi r12]
+ ; gcrRegs -[rdx rdi]
; gcr arg pop 0
- ;; size=15 bbWeight=0 PerfScore 0.00 -G_M50755_IG10: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=6.46 PerfScore 33.93 +G_M50755_IG12: ; bbWeight=33.68, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r13d
- cmp dword ptr [r14+0x08], r13d - jg SHORT G_M50755_IG06 - ;; size=9 bbWeight=1 PerfScore 4.25 -G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ cmp r12d, r13d + jg SHORT G_M50755_IG04 + ;; size=8 bbWeight=33.68 PerfScore 50.53 +G_M50755_IG13: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r14] lea rdi, bword ptr [r15+0x08] ; byrRegs +[rdi] @@ -121,9 +146,9 @@ G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rbx rsi r15] ; byrRegs -[rdi] nop
- ;; size=13 bbWeight=26.04 PerfScore 52.07 -G_M50755_IG12: ; bbWeight=26.04, epilog, nogc, extend - add rsp, 8
+ ;; size=13 bbWeight=0.80 PerfScore 1.60 +G_M50755_IG14: ; bbWeight=0.80, epilog, nogc, extend + add rsp, 24
pop rbx pop r12 pop r13 @@ -131,17 +156,9 @@ G_M50755_IG12: ; bbWeight=26.04, epilog, nogc, extend pop r15 pop rbp ret
- ;; size=15 bbWeight=26.04 PerfScore 110.65 -G_M50755_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r12 r14-r15] - mov eax, dword ptr [rbp-0x2C] - inc eax - cmp dword ptr [rbx+0x08], eax - jg SHORT G_M50755_IG08 - jmp SHORT G_M50755_IG10 - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0.80 PerfScore 3.40
-; Total bytes of code 181, prolog size 22, PerfScore 36484.49, instruction count 68, allocated bytes for code 181 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
+; Total bytes of code 205, prolog size 25, PerfScore 9025.94, instruction count 74, allocated bytes for code 205 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -149,12 +166,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0B
+ SizeOfProlog : 0x0E
CountOfUnwindCodes: 7 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)

+18 (+14.17%) : 287472.dasm - System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)

@@ -2,91 +2,106 @@ ; Emitting BLENDED_CODE for generic X64 - Unix ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rbp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 130
; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 9, 3 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.List`1[ushort]> -; V01 arg1 [V01,T01] ( 6, 3 ) int -> rsi single-def -; V02 loc0 [V02,T02] ( 3, 0 ) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V00 this [V00,T01] ( 7, 5.13) ref -> rbx this class-hnd single-def <System.Collections.Generic.List`1[ushort]> +; V01 arg1 [V01,T00] ( 6, 5.22) int -> rsi single-def +; V02 loc0 [V02,T03] ( 3, 1.16) ref -> r14 class-hnd exact single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V04 cse0 [V04,T02] ( 4, 2.75) int -> r15 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18282_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
+ push rax + lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
+ ;; size=15 bbWeight=1 PerfScore 5.75
G_M18282_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rbx+0x10] - jl SHORT G_M18282_IG08 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M18282_IG03: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r15d, dword ptr [rbx+0x10] + cmp esi, r15d + jl SHORT G_M18282_IG10
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x08], esi
- je SHORT G_M18282_IG07
+ je SHORT G_M18282_IG09 + ;; size=18 bbWeight=1 PerfScore 9.25 +G_M18282_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi]
test esi, esi
- jle SHORT G_M18282_IG06
+ jle SHORT G_M18282_IG08 + ;; size=4 bbWeight=0.80 PerfScore 1.00 +G_M18282_IG04: ; bbWeight=0.42, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movsxd rsi, esi mov rdi, 0xD1FFAB1E ; <unknown class>
- ; gcrRegs -[rdi]
call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[rax]
- mov r15, rax - ; gcrRegs +[r15] - cmp dword ptr [rbx+0x10], 0 - jle SHORT G_M18282_IG04
+ mov r14, rax + ; gcrRegs +[r14] + test r15d, r15d + jle SHORT G_M18282_IG06 + ;; size=26 bbWeight=0.42 PerfScore 1.25 +G_M18282_IG05: ; bbWeight=0.33, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi]
- mov edx, dword ptr [rbx+0x10] - mov rsi, r15
+ mov edx, r15d + mov rsi, r14
; gcrRegs +[rsi] call [<unknown method>]
- ; gcrRegs -[rax rsi rdi] - ;; size=56 bbWeight=0 PerfScore 0.00 -G_M18282_IG04: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi rdi] + ;; size=16 bbWeight=0.33 PerfScore 1.83 +G_M18282_IG06: ; bbWeight=0.42, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi]
- mov rsi, r15
+ mov rsi, r14
; gcrRegs +[rsi] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rbx rsi r15]
+ ; gcrRegs -[rbx rsi r14]
; byrRegs -[rdi] nop
- ;; size=13 bbWeight=0 PerfScore 0.00 -G_M18282_IG05: ; bbWeight=0, epilog, nogc, extend
+ ;; size=13 bbWeight=0.42 PerfScore 0.83 +G_M18282_IG07: ; bbWeight=0.42, epilog, nogc, extend + add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M18282_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=0.42 PerfScore 1.35 +G_M18282_IG08: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx]
- mov rax, 0xD1FFAB1E - ; gcrRegs +[rax] - mov gword ptr [rbx+0x08], rax - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M18282_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rax rbx]
+ mov rdi, 0xD1FFAB1E + ; gcrRegs +[rdi] + mov gword ptr [rbx+0x08], rdi + ;; size=14 bbWeight=0.38 PerfScore 0.48 +G_M18282_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx rdi] + add rsp, 8
pop rbx
+ pop r14
pop r15 pop rbp ret
- ;; size=5 bbWeight=0 PerfScore 0.00 -G_M18282_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=0.58 PerfScore 1.90 +G_M18282_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov edi, 7 mov esi, 15 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int,int)] int3 ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 127, prolog size 9, PerfScore 7.75, instruction count 40, allocated bytes for code 127 (MethodHash=aecbb895) for method System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
+; Total bytes of code 145, prolog size 12, PerfScore 23.64, instruction count 47, allocated bytes for code 145 (MethodHash=aecbb895) for method System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
; ============================================================ Unwind Info: @@ -94,11 +109,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

libraries_tests.run.linux.x64.Release.mch

-19 (-4.40%) : 291677.dasm - Xunit.Assert:InRangeint (Tier1)

@@ -17,9 +17,9 @@ ; V05 tmp1 [V05,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.Int32> ; V06 tmp2 [V06,T15] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" <System.Int32> ; V07 tmp3 [V07,T16] ( 3, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V08 tmp4 [V08,T09] ( 3, 2 ) int -> r12 "guarded devirt return temp"
+; V08 tmp4 [V08,T08] ( 3, 2 ) int -> r12 "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.AssertRangeComparer`1[int]>
-; V10 tmp6 [V10,T08] ( 4, 2 ) int -> rcx "guarded devirt return temp"
+; V10 tmp6 [V10,T09] ( 3, 2 ) int -> rcx "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.AssertRangeComparer`1[int]> ; V12 tmp8 [V12,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V13 tmp9 [V13 ] ( 2, 4 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" @@ -60,10 +60,10 @@ G_M47302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=31 bbWeight=1 PerfScore 7.75 G_M47302_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test rbx, rbx
- je G_M47302_IG10
+ je G_M47302_IG12
mov rdi, 0xD1FFAB1E ; Xunit.Sdk.AssertRangeComparer`1[int] cmp qword ptr [rbx], rdi
- jne G_M47302_IG11
+ jne G_M47302_IG13
mov dword ptr [rbp-0x30], r13d mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST @@ -74,26 +74,18 @@ G_M47302_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rax] ; byrRegs +[rax] cmp dword ptr [rax], r15d
- jge SHORT G_M47302_IG04
+ jge SHORT G_M47302_IG08
;; size=62 bbWeight=1 PerfScore 14.00
-G_M47302_IG03: ; bbWeight=0.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M47302_IG03: ; bbWeight=0.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[rax] mov r12d, -1
- jmp SHORT G_M47302_IG05 - ;; size=8 bbWeight=0.67 PerfScore 1.50 -G_M47302_IG04: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref - ; byrRegs +[rax] - xor r12d, r12d - cmp dword ptr [rax], r15d - setg r12b - ;; size=10 bbWeight=0.33 PerfScore 1.42 -G_M47302_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rax]
+ ;; size=6 bbWeight=0.67 PerfScore 0.17 +G_M47302_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- jg G_M47302_IG13
+ jg SHORT G_M47302_IG11
mov rdi, 0xD1FFAB1E ; Xunit.Sdk.AssertRangeComparer`1[int] cmp qword ptr [rbx], rdi
- jne G_M47302_IG12
+ jne SHORT G_M47302_IG10
mov dword ptr [rbp-0x38], r15d mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST @@ -104,25 +96,17 @@ G_M47302_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rax] ; byrRegs +[rax] cmp dword ptr [rax], r14d
- jge SHORT G_M47302_IG07 - ;; size=62 bbWeight=1 PerfScore 14.00 -G_M47302_IG06: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M47302_IG09 + ;; size=54 bbWeight=1 PerfScore 14.00 +G_M47302_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax] mov ecx, -1
- jmp SHORT G_M47302_IG08 - ;; size=7 bbWeight=0.67 PerfScore 1.50 -G_M47302_IG07: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref - ; byrRegs +[rax] - xor ecx, ecx - cmp dword ptr [rax], r14d - setg cl - ;; size=8 bbWeight=0.33 PerfScore 1.42 -G_M47302_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rax]
+ ;; size=5 bbWeight=0.67 PerfScore 0.17 +G_M47302_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test ecx, ecx
- jg G_M47302_IG13 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M47302_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jg SHORT G_M47302_IG11 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M47302_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -132,44 +116,24 @@ G_M47302_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M47302_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - mov rbx, rax
+G_M47302_IG08: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, gcvars, byref, isz
; gcrRegs +[rbx]
- mov edi, 489 - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rdi, rax - ; gcrRegs +[rdi] - mov esi, 64 - call [<unknown method>] - ; gcrRegs -[rdi] - mov rsi, rax - ; gcrRegs +[rsi] - mov rdi, rbx - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rax rsi rdi] - mov rdi, rbx - ; gcrRegs +[rdi] - call CORINFO_HELP_THROW - ; gcrRegs -[rbx rdi] - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M47302_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; byrRegs +[rax] + xor r12d, r12d + cmp dword ptr [rax], r15d + setg r12b + jmp SHORT G_M47302_IG04 + ;; size=12 bbWeight=0.33 PerfScore 2.08 +G_M47302_IG09: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + ; gcrRegs -[rbx] + xor ecx, ecx + cmp dword ptr [rax], r14d + setg cl + jmp SHORT G_M47302_IG06 + ;; size=10 bbWeight=0.33 PerfScore 2.08 +G_M47302_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- mov rdi, rbx - ; gcrRegs +[rdi] - mov edx, r15d - mov esi, r13d - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - mov r12d, eax - jmp G_M47302_IG05 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M47302_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
mov rdi, rbx ; gcrRegs +[rdi] mov edx, r14d @@ -178,10 +142,9 @@ G_M47302_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [r11]<unknown method> ; gcrRegs -[rbx rdi] mov ecx, eax
- test ecx, ecx - jle G_M47302_IG09 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M47302_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M47302_IG06 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M47302_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Int32 call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -208,10 +171,46 @@ G_M47302_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rdi] call CORINFO_HELP_THROW ; gcrRegs -[rax rdi]
- int3 - ;; size=87 bbWeight=0 PerfScore 0.00
+ ;; size=86 bbWeight=0 PerfScore 0.00 +G_M47302_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + mov rbx, rax + ; gcrRegs +[rbx] + mov edi, 489 + mov rsi, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + mov rdi, rax + ; gcrRegs +[rdi] + mov esi, 64 + call [<unknown method>] + ; gcrRegs -[rdi] + mov rsi, rax + ; gcrRegs +[rsi] + mov rdi, rbx + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rax rsi rdi] + mov rdi, rbx + ; gcrRegs +[rdi] + call CORINFO_HELP_THROW + ; gcrRegs -[rbx rdi] + ;; size=72 bbWeight=0 PerfScore 0.00 +G_M47302_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx] + mov rdi, rbx + ; gcrRegs +[rdi] + mov edx, r15d + mov esi, r13d + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rdi] + mov r12d, eax + jmp G_M47302_IG04 + ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 432, prolog size 19, PerfScore 47.08, instruction count 105, allocated bytes for code 432 (MethodHash=d70f4739) for method Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
+; Total bytes of code 413, prolog size 19, PerfScore 45.75, instruction count 103, allocated bytes for code 413 (MethodHash=d70f4739) for method Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
; ============================================================ Unwind Info:

-39 (-4.04%) : 456692.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)

@@ -114,7 +114,7 @@ G_M39096_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r13d, dword ptr [rbp-0x38] cmp r13d, 1
- jle G_M39096_IG13
+ jle G_M39096_IG31
;; size=59 bbWeight=1 PerfScore 17.00 G_M39096_IG03: ; bbWeight=1.35, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp r13d, 16 @@ -122,25 +122,25 @@ G_M39096_IG03: ; bbWeight=1.35, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ;; size=6 bbWeight=1.35 PerfScore 1.69 G_M39096_IG04: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp r13d, 2
- je G_M39096_IG23
+ je G_M39096_IG16
;; size=10 bbWeight=0.99 PerfScore 1.24 G_M39096_IG05: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp r13d, 3
- je G_M39096_IG21
+ je G_M39096_IG14
;; size=10 bbWeight=0.82 PerfScore 1.03 G_M39096_IG06: ; bbWeight=0.60, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, qword ptr [r15+0x38] mov rdi, qword ptr [rdi] mov r12, qword ptr [rdi+0x20] test r12, r12
- je G_M39096_IG20
+ je G_M39096_IG23
;; size=20 bbWeight=0.60 PerfScore 4.37 G_M39096_IG07: ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- jmp G_M39096_IG25
+ jmp G_M39096_IG24
;; size=5 bbWeight=0.48 PerfScore 0.96 G_M39096_IG08: ; bbWeight=0.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref test r14d, r14d
- je G_M39096_IG32
+ je G_M39096_IG33
;; size=9 bbWeight=0.36 PerfScore 0.45 G_M39096_IG09: ; bbWeight=1.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz dec r14d @@ -200,92 +200,12 @@ G_M39096_IG12: ; bbWeight=1.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp r13d, 1 jg G_M39096_IG03 ;; size=89 bbWeight=1.36 PerfScore 27.18
-G_M39096_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M39096_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- add rsp, 40 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M39096_IG14: ; bbWeight=12.30, gcVars=0000000000000020 {V27}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
+ jmp G_M39096_IG31 + ;; size=5 bbWeight=0.01 PerfScore 0.02 +G_M39096_IG14: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- ; byrRegs +[r15] - ; GC ptr vars +{V05 V27} - lea eax, [r13+0x01] - cmp eax, r12d - jae G_M39096_IG35 - mov edi, eax - lea rdi, bword ptr [r15+8*rdi] - ; byrRegs +[rdi] - mov esi, r13d - mov rsi, gword ptr [r15+8*rsi] - ; gcrRegs +[rsi] - call CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[rsi] - ; byrRegs -[rdi] - dec r13d - mov rcx, gword ptr [rbp-0x50] - ; gcrRegs +[rcx] - ;; size=38 bbWeight=12.30 PerfScore 86.08 -G_M39096_IG15: ; bbWeight=17.15, gcrefRegs=000A {rcx rbx}, byrefRegs=8000 {r15}, byref, isz - test r13d, r13d - jl SHORT G_M39096_IG18 - ;; size=5 bbWeight=17.15 PerfScore 21.43 -G_M39096_IG16: ; bbWeight=16.38, gcrefRegs=000A {rcx rbx}, byrefRegs=8000 {r15}, byref, isz - cmp r13d, r12d - jae G_M39096_IG35 - mov edx, r13d - mov rdx, gword ptr [r15+8*rdx] - ; gcrRegs +[rdx] - mov rsi, rcx - ; gcrRegs +[rsi] - mov rdi, gword ptr [rbx+0x08] - ; gcrRegs +[rdi] - call [rbx+0x18]System.Comparison`1[System.__Canon]:Invoke(System.__Canon,System.__Canon):int:this - ; gcrRegs -[rcx rdx rsi rdi] - ; gcr arg pop 0 - test eax, eax - jl SHORT G_M39096_IG14 - ;; size=30 bbWeight=16.38 PerfScore 163.82 -G_M39096_IG17: ; bbWeight=8.19, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - mov rcx, gword ptr [rbp-0x50] - ; gcrRegs +[rcx] - ;; size=4 bbWeight=8.19 PerfScore 8.19 -G_M39096_IG18: ; bbWeight=4.85, gcrefRegs=000A {rcx rbx}, byrefRegs=8000 {r15}, byref - lea edi, [r13+0x01] - cmp edi, r12d - jae G_M39096_IG35 - lea rdi, bword ptr [r15+8*rdi] - ; byrRegs +[rdi] - mov rsi, rcx - ; gcrRegs +[rsi] - ; GC ptr vars -{V05 V27} - call CORINFO_HELP_CHECKED_ASSIGN_REF - ; gcrRegs -[rcx rsi] - ; byrRegs -[rdi] - mov r13d, dword ptr [rbp-0x48] - cmp r13d, r14d - jl G_M39096_IG26 - ;; size=38 bbWeight=4.85 PerfScore 27.87 -G_M39096_IG19: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[r15] - jmp G_M39096_IG13 - ;; size=5 bbWeight=0.54 PerfScore 1.07 -G_M39096_IG20: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx] - mov rdi, r15 - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r12, rax - jmp G_M39096_IG25 - ;; size=26 bbWeight=0.12 PerfScore 0.45 -G_M39096_IG21: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14, bword ptr [rbp-0x40] ; byrRegs +[r14] mov r15d, dword ptr [rbp-0x38] @@ -293,11 +213,11 @@ G_M39096_IG21: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, call [<unknown method>] ; gcr arg pop 0 test r15d, r15d
- je G_M39096_IG35
+ je G_M39096_IG32
mov rsi, gword ptr [r14] ; gcrRegs +[rsi] cmp r15d, 1
- jbe G_M39096_IG35
+ jbe G_M39096_IG32
mov rdx, gword ptr [r14+0x08] ; gcrRegs +[rdx] mov rdi, gword ptr [rbx+0x08] @@ -306,12 +226,12 @@ G_M39096_IG21: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdx rsi rdi] ; gcr arg pop 0 test eax, eax
- jle G_M39096_IG28 - ;; size=60 bbWeight=0.22 PerfScore 3.98 -G_M39096_IG22: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref - jmp G_M39096_IG27 - ;; size=5 bbWeight=0.15 PerfScore 0.30 -G_M39096_IG23: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jle SHORT G_M39096_IG19 + ;; size=56 bbWeight=0.22 PerfScore 3.98 +G_M39096_IG15: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz + jmp SHORT G_M39096_IG18 + ;; size=2 bbWeight=0.15 PerfScore 0.30 +G_M39096_IG16: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r14] mov r15, bword ptr [rbp-0x40] ; byrRegs +[r15] @@ -320,11 +240,11 @@ G_M39096_IG23: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, call [<unknown method>] ; gcr arg pop 0 test r14d, r14d
- je G_M39096_IG35
+ je G_M39096_IG32
mov rsi, gword ptr [r15] ; gcrRegs +[rsi] cmp r14d, 1
- jbe G_M39096_IG35
+ jbe G_M39096_IG32
mov rdx, gword ptr [r15+0x08] ; gcrRegs +[rdx] mov rdi, gword ptr [rbx+0x08] @@ -333,9 +253,9 @@ G_M39096_IG23: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdx rbx rsi rdi] ; gcr arg pop 0 test eax, eax
- jle G_M39096_IG13
+ jle G_M39096_IG31
;; size=60 bbWeight=0.17 PerfScore 3.02
-G_M39096_IG24: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M39096_IG17: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov rbx, gword ptr [r15] ; gcrRegs +[rbx] mov rsi, gword ptr [r15+0x08] @@ -352,40 +272,11 @@ G_M39096_IG24: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rbx rsi] ; byrRegs -[rdi r15]
- jmp G_M39096_IG13
+ jmp G_M39096_IG31
;; size=32 bbWeight=0.11 PerfScore 1.03
-G_M39096_IG25: ; bbWeight=0.60, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M39096_IG18: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
; gcrRegs +[rbx]
- mov rsi, r12 - lea rdi, [rbp-0x40] - mov ecx, r13d - xor edx, edx - call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] - ; byrRegs +[rax] - ; gcr arg pop 0 - mov r15, rax - ; byrRegs +[r15] - mov r12d, edx - xor r13d, r13d - lea r14d, [r12-0x01] - test r14d, r14d - jle G_M39096_IG13 - ;; size=41 bbWeight=0.60 PerfScore 4.07 -G_M39096_IG26: ; bbWeight=4.85, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref - ; byrRegs -[rax] - lea eax, [r13+0x01] - mov dword ptr [rbp-0x48], eax - mov edx, eax - mov rcx, gword ptr [r15+8*rdx] - ; gcrRegs +[rcx] - mov gword ptr [rbp-0x50], rcx - ; GC ptr vars +{V27} - jmp G_M39096_IG15 - ;; size=22 bbWeight=4.85 PerfScore 32.72 -G_M39096_IG27: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref - ; gcrRegs -[rcx] - ; byrRegs -[r15] +[r14] - ; GC ptr vars -{V27}
+ ; byrRegs +[r14]
mov r15, gword ptr [r14] ; gcrRegs +[r15] mov rsi, gword ptr [r14+0x08] @@ -403,7 +294,7 @@ G_M39096_IG27: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14 ; gcrRegs -[rsi r15] ; byrRegs -[rdi r14] ;; size=27 bbWeight=0.15 PerfScore 1.06
-G_M39096_IG28: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39096_IG19: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r12, bword ptr [rbp-0x40] ; byrRegs +[r12] mov r13d, dword ptr [rbp-0x38] @@ -411,11 +302,11 @@ G_M39096_IG28: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ...

-13 (-3.02%) : 700973.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Collections.Immutable.ImmutableArray1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1221
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1221
; 3 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -70,23 +70,32 @@ G_M34579_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14, rdx ; gcrRegs +[r14] ;; size=38 bbWeight=1 PerfScore 9.75
-G_M34579_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M34579_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
- je G_M34579_IG16
+ je G_M34579_IG18
mov r13, gword ptr [rbx+0x08] ; gcrRegs +[r13] mov r12, gword ptr [r13+0x08] ; gcrRegs +[r12] cmp byte ptr [rbx+0x15], 0
- jne G_M34579_IG17
+ jne G_M34579_IG19
mov rdi, qword ptr [rbx] mov rsi, qword ptr [rdi+0x38] mov rsi, qword ptr [rsi] mov r11, qword ptr [rsi+0x48] test r11, r11
- je G_M34579_IG10 - ;; size=50 bbWeight=1 PerfScore 18.50 -G_M34579_IG03: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M34579_IG04 + ;; size=46 bbWeight=1 PerfScore 18.50 +G_M34579_IG03: ; bbWeight=0.80, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M34579_IG05 + ;; size=2 bbWeight=0.80 PerfScore 1.60 +G_M34579_IG04: ; bbWeight=0.20, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r11, rax + ;; size=18 bbWeight=0.20 PerfScore 0.30 +G_M34579_IG05: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r12 ; gcrRegs +[rdi] mov rsi, r15 @@ -96,7 +105,7 @@ G_M34579_IG03: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefR ; gcr arg pop 0 mov r12d, eax ;; size=12 bbWeight=1 PerfScore 3.75
-G_M34579_IG04: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M34579_IG06: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [r13+0x08] ; gcrRegs +[rax] mov gword ptr [rbp-0x48], rax @@ -112,32 +121,17 @@ G_M34579_IG04: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= imul rsi, rdx shr rsi, 32 cmp esi, ecx
- jae G_M34579_IG15
+ jae G_M34579_IG17
mov esi, esi mov rcx, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[rcx] test rcx, rcx mov rax, gword ptr [rbp-0x48]
- je SHORT G_M34579_IG07
+ jne SHORT G_M34579_IG10
;; size=64 bbWeight=1 PerfScore 21.50
-G_M34579_IG05: ; bbWeight=0.34, gcVars=0000000000080000 {V15}, gcrefRegs=E00B {rax rcx rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rdi] - mov gword ptr [rbp-0x50], rcx - ; GC ptr vars +{V17} - cmp r12d, dword ptr [rcx+0x18] - je G_M34579_IG13 - ;; size=14 bbWeight=0.34 PerfScore 1.72 -G_M34579_IG06: ; bbWeight=0.34, gcVars=0000000000080800 {V15 V17}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rcx] - mov rcx, gword ptr [rbp-0x50] - ; gcrRegs +[rcx] - mov rcx, gword ptr [rcx+0x10] - test rcx, rcx - jne SHORT G_M34579_IG05 - ;; size=13 bbWeight=0.34 PerfScore 1.46 -G_M34579_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rcx] - ; GC ptr vars -{V15 V17}
+G_M34579_IG07: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rcx rdi] + ; GC ptr vars -{V15}
xor ecx, ecx mov gword ptr [rbp-0x38], rcx mov byte ptr [rbp-0x40], 1 @@ -173,17 +167,42 @@ G_M34579_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M34579_IG10: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] +[r12-r15] - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r11, rax - jmp G_M34579_IG03 - ;; size=23 bbWeight=0.20 PerfScore 0.70 -G_M34579_IG11: ; bbWeight=0.00, gcVars=0000000000080800 {V15 V17}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r12] +[rax]
+G_M34579_IG10: ; bbWeight=0.34, gcVars=0000000000080000 {V15}, gcrefRegs=E00B {rax rcx rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx r13-r15] + ; GC ptr vars +{V15 V19} + mov gword ptr [rbp-0x50], rcx + ; GC ptr vars +{V17} + cmp r12d, dword ptr [rcx+0x18] + je SHORT G_M34579_IG13 + ;; size=10 bbWeight=0.34 PerfScore 1.72 +G_M34579_IG11: ; bbWeight=0.34, gcVars=0000000000080800 {V15 V17}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rcx] + ; GC ptr vars -{V19} + mov rcx, gword ptr [rbp-0x50] + ; gcrRegs +[rcx] + mov rcx, gword ptr [rcx+0x10] + test rcx, rcx + jne SHORT G_M34579_IG10 + ;; size=13 bbWeight=0.34 PerfScore 1.46 +G_M34579_IG12: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rcx] + ; GC ptr vars -{V15 V17} + jmp SHORT G_M34579_IG07 + ;; size=2 bbWeight=0.26 PerfScore 0.51 +G_M34579_IG13: ; bbWeight=0.00, gcVars=0000000000080800 {V15 V17}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax]
; GC ptr vars +{V15 V17 V19}
+ mov rdi, qword ptr [rbx] + mov rsi, qword ptr [rdi+0x38] + mov rsi, qword ptr [rsi] + mov r11, qword ptr [rsi+0x40] + test r11, r11 + je SHORT G_M34579_IG15 + ;; size=19 bbWeight=0.00 PerfScore 0.01 +G_M34579_IG14: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M34579_IG16 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M34579_IG15: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcrRegs -[rax] @@ -192,7 +211,7 @@ G_M34579_IG11: ; bbWeight=0.00, gcVars=0000000000080800 {V15 V17}, gcrefR mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax] ;; size=22 bbWeight=0.00 PerfScore 0.00
-G_M34579_IG12: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M34579_IG16: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp-0x50] ; gcrRegs +[rcx] mov rsi, gword ptr [rcx+0x08] @@ -207,32 +226,20 @@ G_M34579_IG12: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byr test eax, eax mov rax, gword ptr [rbp-0x48] ; gcrRegs +[rax]
- je G_M34579_IG06
+ je SHORT G_M34579_IG11
mov rcx, gword ptr [rbp-0x50] ; gcrRegs +[rcx] mov rax, gword ptr [rcx+0x20] mov gword ptr [rbp-0x38], rax jmp SHORT G_M34579_IG08
- ;; size=43 bbWeight=0.00 PerfScore 0.02 -G_M34579_IG13: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - mov rdi, qword ptr [rbx] - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi] - mov r11, qword ptr [rsi+0x40] - test r11, r11 - je SHORT G_M34579_IG11 - ;; size=19 bbWeight=0.00 PerfScore 0.01 -G_M34579_IG14: ; bbWeight=0.00, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M34579_IG12 - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M34579_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax r13-r15]
+ ;; size=39 bbWeight=0.00 PerfScore 0.02 +G_M34579_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rcx r13-r15]
; GC ptr vars -{V15 V17 V19} call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M34579_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M34579_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, 1 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -245,7 +252,7 @@ G_M34579_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M34579_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M34579_IG19: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r13-r15] mov rdi, r15 ; gcrRegs +[rdi] @@ -255,10 +262,10 @@ G_M34579_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= ; gcrRegs -[rdi] ; gcr arg pop 0 mov r12d, eax
- jmp G_M34579_IG04
+ jmp G_M34579_IG06
;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 430, prolog size 38, PerfScore 73.67, instruction count 118, allocated bytes for code 430 (MethodHash=144f78ec) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
+; Total bytes of code 417, prolog size 38, PerfScore 75.38, instruction count 119, allocated bytes for code 417 (MethodHash=144f78ec) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
; ============================================================ Unwind Info:

+26 (+6.05%) : 673483.dasm - Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)

@@ -21,7 +21,7 @@ G_M24680_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M24680_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rax, 0xD1FFAB1E cmp rdi, rax
- jae G_M24680_IG07
+ jae G_M24680_IG09
;; size=19 bbWeight=1 PerfScore 1.50 G_M24680_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp rdi, 10 @@ -37,12 +37,12 @@ G_M24680_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr cmp rdi, 0x186A0 jb G_M24680_IG11 ;; size=49 bbWeight=1.00 PerfScore 4.99
-G_M24680_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24680_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 0xD1FFAB1E jb G_M24680_IG18 cmp rdi, 0xD1FFAB1E
- jb G_M24680_IG10 - ;; size=26 bbWeight=1.00 PerfScore 2.49
+ jb SHORT G_M24680_IG08 + ;; size=22 bbWeight=1.00 PerfScore 2.49
G_M24680_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov eax, 10 mov ecx, 9 @@ -51,14 +51,21 @@ G_M24680_IG06: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov ecx, 8 cmp rdi, 0xD1FFAB1E cmovb eax, ecx
- jmp G_M24680_IG09 - ;; size=40 bbWeight=0.97 PerfScore 3.66 -G_M24680_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=35 bbWeight=0.97 PerfScore 1.71 +G_M24680_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop rbp + ret + ;; size=2 bbWeight=1.00 PerfScore 1.50 +G_M24680_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov eax, 7 + jmp SHORT G_M24680_IG07 + ;; size=7 bbWeight=0.02 PerfScore 0.05 +G_M24680_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E cmp rdi, rax jb G_M24680_IG12 ;; size=19 bbWeight=0.00 PerfScore 0.00
-G_M24680_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24680_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E cmp rdi, rax jb G_M24680_IG19 @@ -87,23 +94,16 @@ G_M24680_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr cmp rdi, rax mov eax, ecx cmovae eax, edx
- ;; size=163 bbWeight=0.00 PerfScore 0.02 -G_M24680_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbp - ret - ;; size=2 bbWeight=1.00 PerfScore 1.50 -G_M24680_IG10: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov eax, 7 - jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0.02 PerfScore 0.05 -G_M24680_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=168 bbWeight=0.00 PerfScore 0.02 +G_M24680_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 5
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0.00 PerfScore 0.00 -G_M24680_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0.00 PerfScore 0.00 +G_M24680_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 11
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0.00 PerfScore 0.00
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0.00 PerfScore 0.00
G_M24680_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov eax, 1 ;; size=5 bbWeight=0.00 PerfScore 0.00 @@ -118,38 +118,38 @@ G_M24680_IG16: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=0 PerfScore 0.00
-G_M24680_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24680_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 4
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 6
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 12
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 13
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 14
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 15
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 16
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M24680_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M24680_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 17
- jmp SHORT G_M24680_IG09 - ;; size=7 bbWeight=0 PerfScore 0.00
+ jmp G_M24680_IG07 + ;; size=10 bbWeight=0 PerfScore 0.00
G_M24680_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov eax, 2 ;; size=5 bbWeight=0 PerfScore 0.00 @@ -158,7 +158,7 @@ G_M24680_IG26: ; bbWeight=0, epilog, nogc, extend ret ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 430, prolog size 4, PerfScore 16.71, instruction count 91, allocated bytes for code 430 (MethodHash=28ff9f97) for method Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
+; Total bytes of code 456, prolog size 4, PerfScore 14.76, instruction count 91, allocated bytes for code 456 (MethodHash=28ff9f97) for method Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
; ============================================================ Unwind Info:

+23 (+6.48%) : 693278.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)

@@ -59,103 +59,103 @@ G_M2348_IG10: ; bbWeight=0.10, epilog, nogc, extend ret ;; size=2 bbWeight=0.10 PerfScore 0.15 G_M2348_IG11: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rax, 0xD1FFAB1E ; <unknown class> - cmp rcx, rax - jne SHORT G_M2348_IG13 - ;; size=15 bbWeight=0.09 PerfScore 0.14 -G_M2348_IG12: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov edx, 8 - jmp SHORT G_M2348_IG16 - ;; size=7 bbWeight=0.09 PerfScore 0.21 -G_M2348_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - je SHORT G_M2348_IG18 - mov rax, 0xD1FFAB1E ; <unknown class> - cmp rcx, rax - je SHORT G_M2348_IG19
mov rax, 0xD1FFAB1E ; <unknown class> cmp rcx, rax jne SHORT G_M2348_IG15
- ;; size=45 bbWeight=0.00 PerfScore 0.00 -G_M2348_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov edx, 14 - jmp SHORT G_M2348_IG16 - ;; size=7 bbWeight=0.00 PerfScore 0.00 -G_M2348_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - jne SHORT G_M2348_IG20 - mov edx, 16 - ;; size=20 bbWeight=0.00 PerfScore 0.00 -G_M2348_IG16: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=0.09 PerfScore 0.14 +G_M2348_IG12: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov edx, 8 + ;; size=5 bbWeight=0.09 PerfScore 0.02 +G_M2348_IG13: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movsx rax, dl ;; size=4 bbWeight=0.09 PerfScore 0.02
-G_M2348_IG17: ; bbWeight=0.09, epilog, nogc, extend
+G_M2348_IG14: ; bbWeight=0.09, epilog, nogc, extend
pop rbp ret ;; size=2 bbWeight=0.09 PerfScore 0.14
-G_M2348_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov edx, 15 - jmp SHORT G_M2348_IG16 - ;; size=7 bbWeight=0 PerfScore 0.00
+G_M2348_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + je G_M2348_IG25 + mov rax, 0xD1FFAB1E ; <unknown class> + cmp rcx, rax + je G_M2348_IG26 + mov rax, 0xD1FFAB1E ; <unknown class> + cmp rcx, rax + jne SHORT G_M2348_IG17 + ;; size=53 bbWeight=0.00 PerfScore 0.00 +G_M2348_IG16: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov edx, 14 + jmp SHORT G_M2348_IG13 + ;; size=7 bbWeight=0.00 PerfScore 0.00 +G_M2348_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + jne SHORT G_M2348_IG18 + mov edx, 16 + jmp SHORT G_M2348_IG13 + ;; size=22 bbWeight=0.00 PerfScore 0.00 +G_M2348_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + jne SHORT G_M2348_IG19 + mov edx, 18 + jmp SHORT G_M2348_IG13 + ;; size=22 bbWeight=0 PerfScore 0.00
G_M2348_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov edx, 19 - jmp SHORT G_M2348_IG16 - ;; size=7 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + jne SHORT G_M2348_IG20 + mov edx, 17 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG21
- mov edx, 18 - jmp SHORT G_M2348_IG16 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 11 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG22
- mov edx, 17 - jmp SHORT G_M2348_IG16 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 12 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG23
- mov edx, 11 - jmp SHORT G_M2348_IG16 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 33 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG24
- mov edx, 12 - jmp SHORT G_M2348_IG16 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - jne SHORT G_M2348_IG25 - mov edx, 33 - jmp G_M2348_IG16 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - jne SHORT G_M2348_IG26
mov edx, 10
- jmp G_M2348_IG16
+ jmp G_M2348_IG13
;; size=25 bbWeight=0 PerfScore 0.00
-G_M2348_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; <unknown class> xor eax, eax mov edi, 9 cmp rcx, rdx mov edx, edi cmovne edx, eax
- jmp G_M2348_IG16
+ jmp G_M2348_IG13
;; size=30 bbWeight=0 PerfScore 0.00
+G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov edx, 15 + jmp G_M2348_IG13 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M2348_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov edx, 19 + jmp G_M2348_IG13 + ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 355, prolog size 4, PerfScore 8.04, instruction count 85, allocated bytes for code 355 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
+; Total bytes of code 378, prolog size 4, PerfScore 7.85, instruction count 85, allocated bytes for code 378 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
; ============================================================ Unwind Info:

+23 (+11.11%) : 243167.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)

@@ -9,136 +9,144 @@ ; 2 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 8 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.SortedSet`1+TreeSubSet[int]>
+; V00 this [V00,T00] ( 9, 8 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.SortedSet`1+TreeSubSet[int]>
; V01 arg1 [V01,T01] ( 8, 4.00) int -> r15 single-def ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 4 ) ref -> rdi class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V05 tmp2 [V05,T06] ( 4, 2 ) int -> r14
+; V05 tmp2 [V05,T06] ( 2, 2 ) int -> r14
; V06 tmp3 [V06,T05] ( 3, 4 ) ref -> rdi class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V07 tmp4 [V07,T08] ( 3, 2 ) int -> r13 -; V08 tmp5 [V08,T07] ( 4, 2 ) int -> r14 "guarded devirt return temp"
+; V07 tmp4 [V07,T07] ( 3, 2 ) int -> r14 +; V08 tmp5 [V08,T08] ( 3, 2 ) int -> r14 "guarded devirt return temp"
; V09 tmp6 [V09,T02] ( 4, 4.00) int -> rsi "guarded devirt arg temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]>
-; V11 tmp8 [V11,T09] ( 3, 2 ) int -> r13 "guarded devirt return temp"
+; V11 tmp8 [V11,T09] ( 3, 2 ) int -> r14 "guarded devirt return temp"
; V12 tmp9 [V12,T03] ( 4, 4.00) int -> rsi "guarded devirt arg temp" ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]> ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V15 tmp12 [V15,T10] ( 3, 2 ) int -> r14 "Inline return value spill temp"
+; V15 tmp12 [V15,T10] ( 3, 2.00) int -> r14 "Inline return value spill temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V17 tmp14 [V17,T11] ( 3, 2 ) int -> r13 "Inline return value spill temp"
+; V17 tmp14 [V17,T11] ( 3, 2.00) int -> r14 "Inline return value spill temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14
- push r13
push rbx
+ push rax
lea rbp, [rsp+0x20] mov rbx, rdi ; gcrRegs +[rbx] mov r15d, esi
- ;; size=19 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M7586_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx+0x3C], 0
- je SHORT G_M7586_IG06
+ je G_M7586_IG12
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x30] mov rax, 0xD1FFAB1E ; System.Collections.Generic.GenericComparer`1[int] cmp qword ptr [rdi], rax
- jne SHORT G_M7586_IG11
+ jne G_M7586_IG15
cmp esi, r15d
- jge SHORT G_M7586_IG04 - ;; size=33 bbWeight=1 PerfScore 13.50 -G_M7586_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M7586_IG09 + ;; size=41 bbWeight=1 PerfScore 13.50 +G_M7586_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov r14d, -1
- jmp SHORT G_M7586_IG05 - ;; size=8 bbWeight=1.00 PerfScore 2.24 -G_M7586_IG04: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - xor r14d, r14d - cmp esi, r15d - setg r14b - ;; size=10 bbWeight=0.00 PerfScore 0.00 -G_M7586_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1.00 PerfScore 0.25 +G_M7586_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test r14d, r14d
- jg SHORT G_M7586_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M7586_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M7586_IG13
cmp byte ptr [rbx+0x3D], 0
- je SHORT G_M7586_IG14
+ je G_M7586_IG16 + ;; size=15 bbWeight=1 PerfScore 5.25 +G_M7586_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x34] mov rax, 0xD1FFAB1E ; System.Collections.Generic.GenericComparer`1[int] cmp qword ptr [rdi], rax
- jne SHORT G_M7586_IG15
+ jne SHORT G_M7586_IG11
cmp esi, r15d
- jge SHORT G_M7586_IG08 - ;; size=33 bbWeight=1 PerfScore 13.50 -G_M7586_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jge SHORT G_M7586_IG10 + ;; size=27 bbWeight=1 PerfScore 9.50 +G_M7586_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
- mov r13d, -1 - jmp SHORT G_M7586_IG09 - ;; size=8 bbWeight=1.00 PerfScore 2.24 -G_M7586_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - xor r13d, r13d - cmp esi, r15d - setg r13b - ;; size=10 bbWeight=0.00 PerfScore 0.00 -G_M7586_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, r13d
+ mov r14d, -1 + ;; size=6 bbWeight=1.00 PerfScore 0.25 +G_M7586_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, r14d
not eax shr eax, 31 ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7586_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M7586_IG08: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx
- pop r13
pop r14 pop r15 pop rbp ret
- ;; size=9 bbWeight=1 PerfScore 3.50 -G_M7586_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.25 +G_M7586_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx] + xor r14d, r14d + cmp esi, r15d + setg r14b + jmp SHORT G_M7586_IG04 + ;; size=12 bbWeight=0.00 PerfScore 0.01 +G_M7586_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] + xor r14d, r14d + cmp esi, r15d + setg r14b + jmp SHORT G_M7586_IG07 + ;; size=12 bbWeight=0.00 PerfScore 0.01 +G_M7586_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + mov edx, r15d + mov r11, 0xD1FFAB1E ; code for <unknown method> + call [r11]<unknown method> + ; gcrRegs -[rdi] + mov r14d, eax + jmp SHORT G_M7586_IG07 + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M7586_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx] + cmp byte ptr [rbx+0x3D], 0 + jne SHORT G_M7586_IG05 + jmp SHORT G_M7586_IG16 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M7586_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + xor eax, eax + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M7586_IG14: ; bbWeight=0, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r14 + pop r15 + pop rbp + ret + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M7586_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rdi] mov edx, r15d mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdi] mov r14d, eax
- test r14d, r14d - jle SHORT G_M7586_IG06
+ jmp G_M7586_IG04
;; size=24 bbWeight=0 PerfScore 0.00
-G_M7586_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7586_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- xor eax, eax - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M7586_IG13: ; bbWeight=0, epilog, nogc, extend - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M7586_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov r13d, 1 - jmp SHORT G_M7586_IG09
+ mov r14d, 1 + jmp SHORT G_M7586_IG07
;; size=8 bbWeight=0 PerfScore 0.00
-G_M7586_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - mov edx, r15d - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - mov r13d, eax - jmp SHORT G_M7586_IG09 - ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 13, PerfScore 43.25, instruction count 67, allocated bytes for code 207 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
+; Total bytes of code 230, prolog size 12, PerfScore 39.02, instruction count 69, allocated bytes for code 230 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -146,13 +154,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08
+ SizeOfProlog : 0x07
CountOfUnwindCodes: 5 FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 35 6 10 19 -29 +25
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 104 37 45 22 -536 +719
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.x64.Release.mch 421 139 185 97 -980 +1,385
librariestestsnotieredcompilation.run.linux.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
560 182 240 138 -1,545 +2,129

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 36,217 3,549 32,668 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 160,327 63,207 97,120 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.x64.checked.mch 65,386 50,236 15,150 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,985 355,942 243,043 1 (0.00%) 28 (0.00%)
libraries.crossgen2.linux.x64.checked.mch 234,329 15 234,314 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 296,931 6 296,925 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.x64.Release.mch 759,766 496,184 263,582 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,443 21,912 283,531 0 (0.00%) 0 (0.00%)
realworld.run.linux.x64.checked.mch 33,083 9 33,074 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,414 10 27,404 0 (0.00%) 0 (0.00%)
2,517,881 991,070 1,526,811 1 (0.00%) 28 (0.00%)

jit-analyze output

benchmarks.run_pgo.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 71579583 (overridden on cmd)
Total bytes of diff: 71579579 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           5 : 142377.dasm (2.33 % of base)
           3 : 140216.dasm (0.42 % of base)
           3 : 109214.dasm (1.73 % of base)
           3 : 115713.dasm (1.73 % of base)
           3 : 46009.dasm (0.42 % of base)
           2 : 22516.dasm (0.57 % of base)
           2 : 87247.dasm (0.54 % of base)
           2 : 97575.dasm (1.46 % of base)
           1 : 146367.dasm (0.32 % of base)
           1 : 159090.dasm (0.32 % of base)

Top file improvements (bytes):
          -7 : 92863.dasm (-1.61 % of base)
          -6 : 150177.dasm (-1.66 % of base)
          -4 : 127652.dasm (-1.66 % of base)
          -4 : 122292.dasm (-1.66 % of base)
          -4 : 46297.dasm (-1.61 % of base)
          -4 : 49817.dasm (-1.61 % of base)

16 total files with Code Size differences (6 improved, 10 regressed), 19 unchanged.

Top method regressions (bytes):
           5 (2.33 % of base) : 142377.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
           3 (1.73 % of base) : 109214.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           3 (1.73 % of base) : 115713.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           3 (0.42 % of base) : 140216.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           3 (0.42 % of base) : 46009.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           2 (1.46 % of base) : 97575.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
           2 (0.57 % of base) : 22516.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           2 (0.54 % of base) : 87247.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           1 (0.32 % of base) : 146367.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
           1 (0.32 % of base) : 159090.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)

Top method improvements (bytes):
          -7 (-1.61 % of base) : 92863.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -6 (-1.66 % of base) : 150177.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-1.66 % of base) : 127652.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.66 % of base) : 122292.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.61 % of base) : 46297.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.61 % of base) : 49817.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)

Top method regressions (percentages):
           5 (2.33 % of base) : 142377.dasm - System.Linq.EnumerableSorter`2[System.__Canon,int]:CompareAnyKeys(int,int):int:this (Tier1)
           3 (1.73 % of base) : 109214.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           3 (1.73 % of base) : 115713.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           2 (1.46 % of base) : 97575.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
           2 (0.57 % of base) : 22516.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           2 (0.54 % of base) : 87247.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           3 (0.42 % of base) : 140216.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           3 (0.42 % of base) : 46009.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           1 (0.32 % of base) : 146367.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
           1 (0.32 % of base) : 159090.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)

Top method improvements (percentages):
          -6 (-1.66 % of base) : 150177.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-1.66 % of base) : 127652.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.66 % of base) : 122292.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -7 (-1.61 % of base) : 92863.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -4 (-1.61 % of base) : 46297.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.61 % of base) : 49817.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)

16 total methods with Code Size differences (6 improved, 10 regressed).


coreclr_tests.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 403711931 (overridden on cmd)
Total bytes of diff: 403712114 (overridden on cmd)
Total bytes of delta: 183 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         158 : 287477.dasm (33.05 % of base)
          47 : 287443.dasm (9.79 % of base)
          42 : 287452.dasm (6.13 % of base)
          39 : 287549.dasm (7.94 % of base)
          37 : 287469.dasm (10.72 % of base)
          37 : 287496.dasm (1.88 % of base)
          26 : 287495.dasm (5.65 % of base)
          24 : 397788.dasm (2.14 % of base)
          24 : 287547.dasm (13.26 % of base)
          24 : 287494.dasm (9.76 % of base)
          23 : 287483.dasm (2.21 % of base)
          20 : 396891.dasm (1.78 % of base)
          19 : 287465.dasm (4.39 % of base)
          18 : 287472.dasm (14.17 % of base)
          18 : 388443.dasm (1.75 % of base)
          18 : 393421.dasm (1.11 % of base)
          14 : 392952.dasm (1.66 % of base)
           9 : 287584.dasm (3.83 % of base)
           9 : 357045.dasm (2.55 % of base)
           8 : 201223.dasm (1.46 % of base)

Top file improvements (bytes):
        -133 : 287573.dasm (-43.75 % of base)
         -61 : 287467.dasm (-4.86 % of base)
         -30 : 287512.dasm (-2.82 % of base)
         -29 : 287538.dasm (-6.33 % of base)
         -28 : 287497.dasm (-9.72 % of base)
         -28 : 287568.dasm (-10.37 % of base)
         -24 : 287437.dasm (-9.41 % of base)
         -20 : 287466.dasm (-12.20 % of base)
         -20 : 287493.dasm (-5.67 % of base)
         -20 : 287589.dasm (-7.30 % of base)
         -19 : 287586.dasm (-13.57 % of base)
         -18 : 287446.dasm (-5.52 % of base)
         -15 : 287487.dasm (-4.19 % of base)
         -11 : 287504.dasm (-6.96 % of base)
          -7 : 393185.dasm (-1.16 % of base)
          -7 : 287490.dasm (-3.15 % of base)
          -7 : 287492.dasm (-3.23 % of base)
          -7 : 287508.dasm (-2.13 % of base)
          -6 : 287451.dasm (-5.45 % of base)
          -6 : 287457.dasm (-3.16 % of base)

51 total files with Code Size differences (25 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
         158 (33.05 % of base) : 287477.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
          47 (9.79 % of base) : 287443.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          42 (6.13 % of base) : 287452.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
          39 (7.94 % of base) : 287549.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          37 (10.72 % of base) : 287469.dasm - System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
          37 (1.88 % of base) : 287496.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
          26 (5.65 % of base) : 287495.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
          24 (2.14 % of base) : 397788.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
          24 (13.26 % of base) : 287547.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
          24 (9.76 % of base) : 287494.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
          23 (2.21 % of base) : 287483.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
          20 (1.78 % of base) : 396891.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
          19 (4.39 % of base) : 287465.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
          18 (1.11 % of base) : 393421.dasm - ILCompiler.MetadataManager+<>c__DisplayClass10_0:<GetCompiledMethods>b__0(ILCompiler.DependencyAnalysis.IMethodNode,ILCompiler.DependencyAnalysis.IMethodNode):int:this (Tier1)
          18 (1.75 % of base) : 388443.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
          18 (14.17 % of base) : 287472.dasm - System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
          14 (1.66 % of base) : 392952.dasm - ILCompiler.DependencyAnalysis.SortableDependencyNode:CompareImpl(ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.CompilerComparer):int (Tier1)
           9 (2.55 % of base) : 357045.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           9 (3.83 % of base) : 287584.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           8 (1.46 % of base) : 201223.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)

Top method improvements (bytes):
        -133 (-43.75 % of base) : 287573.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -61 (-4.86 % of base) : 287467.dasm - System.Diagnostics.Tracing.XplatEventLogger:.cctor() (FullOpts)
         -30 (-2.82 % of base) : 287512.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
         -29 (-6.33 % of base) : 287538.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -28 (-10.37 % of base) : 287568.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -28 (-9.72 % of base) : 287497.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
         -24 (-9.41 % of base) : 287437.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-7.30 % of base) : 287589.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -20 (-12.20 % of base) : 287466.dasm - System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
         -20 (-5.67 % of base) : 287493.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
         -19 (-13.57 % of base) : 287586.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -18 (-5.52 % of base) : 287446.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
         -15 (-4.19 % of base) : 287487.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -11 (-6.96 % of base) : 287504.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
          -7 (-1.16 % of base) : 393185.dasm - ILCompiler.DependencyAnalysis.CompilerComparer:Compare(ILCompiler.DependencyAnalysis.ISortableNode,ILCompiler.DependencyAnalysis.ISortableNode):int:this (Tier1)
          -7 (-2.13 % of base) : 287508.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
          -7 (-3.15 % of base) : 287490.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
          -7 (-3.23 % of base) : 287492.dasm - System.Text.UTF8Encoding:GetByteCount(System.String):int:this (FullOpts)
          -6 (-5.45 % of base) : 287451.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
          -6 (-2.64 % of base) : 287498.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)

Top method regressions (percentages):
         158 (33.05 % of base) : 287477.dasm - System.Collections.Generic.Dictionary`2[ushort,System.__Canon]:Resize(int,ubyte):this (FullOpts)
          18 (14.17 % of base) : 287472.dasm - System.Collections.Generic.List`1[ushort]:set_Capacity(int):this (FullOpts)
          24 (13.26 % of base) : 287547.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
          37 (10.72 % of base) : 287469.dasm - System.LazyHelper:Create(int,ubyte):System.LazyHelper (FullOpts)
          47 (9.79 % of base) : 287443.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          24 (9.76 % of base) : 287494.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
          39 (7.94 % of base) : 287549.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          42 (6.13 % of base) : 287452.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
          26 (5.65 % of base) : 287495.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
          19 (4.39 % of base) : 287465.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (FullOpts)
           9 (3.83 % of base) : 287584.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           7 (2.81 % of base) : 287438.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (FullOpts)
           9 (2.55 % of base) : 357045.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          23 (2.21 % of base) : 287483.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
           7 (2.15 % of base) : 392439.dasm - Internal.TypeSystem.MethodSignature:ToString(ubyte):System.String:this (Tier1)
          24 (2.14 % of base) : 397788.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           7 (2.06 % of base) : 384978.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           7 (1.92 % of base) : 287548.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
           4 (1.90 % of base) : 287491.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
          37 (1.88 % of base) : 287496.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)

Top method improvements (percentages):
        -133 (-43.75 % of base) : 287573.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -19 (-13.57 % of base) : 287586.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -20 (-12.20 % of base) : 287466.dasm - System.Diagnostics.Tracing.XplatEventLogger:InitializePersistentListener():System.Diagnostics.Tracing.EventListener (FullOpts)
         -28 (-10.37 % of base) : 287568.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -28 (-9.72 % of base) : 287497.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
         -24 (-9.41 % of base) : 287437.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-7.30 % of base) : 287589.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -11 (-6.96 % of base) : 287504.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
         -29 (-6.33 % of base) : 287538.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -20 (-5.67 % of base) : 287493.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
         -18 (-5.52 % of base) : 287446.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
          -6 (-5.45 % of base) : 287451.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
         -61 (-4.86 % of base) : 287467.dasm - System.Diagnostics.Tracing.XplatEventLogger:.cctor() (FullOpts)
         -15 (-4.19 % of base) : 287487.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
          -2 (-3.28 % of base) : 287456.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
          -7 (-3.23 % of base) : 287492.dasm - System.Text.UTF8Encoding:GetByteCount(System.String):int:this (FullOpts)
          -6 (-3.16 % of base) : 287457.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -7 (-3.15 % of base) : 287490.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
         -30 (-2.82 % of base) : 287512.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
          -6 (-2.64 % of base) : 287498.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)


libraries_tests.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 337126106 (overridden on cmd)
Total bytes of diff: 337126511 (overridden on cmd)
Total bytes of delta: 405 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          59 : 157780.dasm (2.87 % of base)
          35 : 704524.dasm (2.55 % of base)
          27 : 6184.dasm (2.79 % of base)
          26 : 673483.dasm (6.05 % of base)
          24 : 229102.dasm (1.86 % of base)
          23 : 243167.dasm (11.11 % of base)
          23 : 191584.dasm (1.01 % of base)
          23 : 693278.dasm (6.48 % of base)
          22 : 430529.dasm (0.49 % of base)
          21 : 35510.dasm (2.47 % of base)
          20 : 488116.dasm (2.13 % of base)
          20 : 667324.dasm (1.64 % of base)
          19 : 359651.dasm (5.03 % of base)
          19 : 428138.dasm (2.55 % of base)
          19 : 290263.dasm (2.53 % of base)
          18 : 607515.dasm (2.94 % of base)
          17 : 186614.dasm (3.74 % of base)
          17 : 428882.dasm (0.41 % of base)
          17 : 715850.dasm (3.74 % of base)
          16 : 241737.dasm (3.17 % of base)

Top file improvements (bytes):
         -44 : 593901.dasm (-1.37 % of base)
         -39 : 456692.dasm (-4.04 % of base)
         -28 : 424351.dasm (-2.56 % of base)
         -21 : 649755.dasm (-1.99 % of base)
         -19 : 291677.dasm (-4.40 % of base)
         -18 : 647004.dasm (-1.97 % of base)
         -17 : 370808.dasm (-1.91 % of base)
         -13 : 194793.dasm (-2.34 % of base)
         -13 : 641594.dasm (-1.46 % of base)
         -13 : 641632.dasm (-1.43 % of base)
         -13 : 700973.dasm (-3.02 % of base)
         -13 : 337652.dasm (-1.67 % of base)
         -13 : 641208.dasm (-1.46 % of base)
         -12 : 271376.dasm (-1.90 % of base)
         -12 : 465084.dasm (-1.19 % of base)
         -12 : 588924.dasm (-1.90 % of base)
         -12 : 68278.dasm (-1.23 % of base)
         -12 : 649975.dasm (-0.93 % of base)
         -11 : 218083.dasm (-2.55 % of base)
         -11 : 218255.dasm (-2.52 % of base)

57 total files with Code Size differences (30 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          59 (2.87 % of base) : 157780.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          35 (2.55 % of base) : 704524.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
          27 (2.79 % of base) : 6184.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
          26 (6.05 % of base) : 673483.dasm - Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
          24 (1.86 % of base) : 229102.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:Add(int,System.Collections.Generic.IComparer`1[int],byref):System.Collections.Immutable.ImmutableSortedSet`1+Node[int]:this (Tier1)
          23 (1.01 % of base) : 191584.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
          23 (6.48 % of base) : 693278.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
          23 (11.11 % of base) : 243167.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
          22 (0.49 % of base) : 430529.dasm - System.IO.Tests.ConnectedStreamConformanceTests+<Write_DataReadFromDesiredOffset>d__33:MoveNext():this (Tier1)
          21 (2.47 % of base) : 35510.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
          20 (1.64 % of base) : 667324.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.ValueTuple`2[int,int],System.__Canon]:IntroSort(System.Span`1[System.ValueTuple`2[int,int]],System.Span`1[System.__Canon],int) (Tier1)
          20 (2.13 % of base) : 488116.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__EncodeCharRegex_1+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
          19 (2.55 % of base) : 428138.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
          19 (2.53 % of base) : 290263.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
          19 (5.03 % of base) : 359651.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
          18 (2.94 % of base) : 607515.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this (Tier1)
          17 (3.74 % of base) : 186614.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          17 (3.74 % of base) : 715850.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          17 (0.41 % of base) : 428882.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:Encode(System.Formats.Asn1.AsnWriter):this (Tier1)
          16 (3.17 % of base) : 241737.dasm - System.Collections.Generic.GenericArraySortHelper`1[int]:IntroSort(System.Span`1[int],int) (Tier1)

Top method improvements (bytes):
         -44 (-1.37 % of base) : 593901.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedNameBuilder:EncodeComponent(System.String,System.ReadOnlySpan`1[ushort],int,System.String):this (Tier1)
         -39 (-4.04 % of base) : 456692.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -28 (-2.56 % of base) : 424351.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
         -21 (-1.99 % of base) : 649755.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[short]]:AddIfNotPresent(System.Nullable`1[short],byref):ubyte:this (Tier1)
         -19 (-4.40 % of base) : 291677.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -18 (-1.97 % of base) : 647004.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_ListSingle(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Collections.Generic.List`1[float]]:this (Tier1)
         -17 (-1.91 % of base) : 370808.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -13 (-2.34 % of base) : 194793.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -13 (-3.02 % of base) : 700973.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
         -13 (-1.67 % of base) : 337652.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -13 (-1.46 % of base) : 641594.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:Create_StructCollectionInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Text.Json.Serialization.Tests.StructCollection`1[int]]:this (Tier1)
         -13 (-1.43 % of base) : 641632.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:Create_StructDictionaryStringInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Text.Json.Serialization.Tests.StructDictionary`2[System.String,int]]:this (Tier1)
         -13 (-1.46 % of base) : 641208.dasm - System.Text.Json.SourceGeneration.Tests.CreationHandlingTestContext:Create_StructListInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Text.Json.Serialization.Tests.StructList`1[int]]:this (Tier1)
         -12 (-1.19 % of base) : 465084.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
         -12 (-1.90 % of base) : 271376.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
         -12 (-1.90 % of base) : 588924.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
         -12 (-0.93 % of base) : 649975.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableSingle(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[float]]:this (Tier1)
         -12 (-1.23 % of base) : 68278.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
         -11 (-2.55 % of base) : 218083.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 335121.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)

Top method regressions (percentages):
          23 (11.11 % of base) : 243167.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
          23 (6.48 % of base) : 693278.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
          26 (6.05 % of base) : 673483.dasm - Newtonsoft.Json.Utilities.MathUtils:IntLength(ulong):int (Tier1)
          19 (5.03 % of base) : 359651.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
          14 (4.00 % of base) : 87323.dasm - Microsoft.CodeAnalysis.CSharp.BoundAttribute:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[int],ubyte,Microsoft.CodeAnalysis.BitVector,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
          17 (3.74 % of base) : 186614.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          17 (3.74 % of base) : 715850.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          16 (3.17 % of base) : 241737.dasm - System.Collections.Generic.GenericArraySortHelper`1[int]:IntroSort(System.Span`1[int],int) (Tier1)
          11 (3.02 % of base) : 50696.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           8 (2.96 % of base) : 58535.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
          18 (2.94 % of base) : 607515.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this (Tier1)
          59 (2.87 % of base) : 157780.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          27 (2.79 % of base) : 6184.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
          16 (2.64 % of base) : 351840.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
          10 (2.56 % of base) : 534711.dasm - System.Reflection.Emit.SignatureHelper:InternalGetSignatureArray():ubyte[]:this (Tier1)
          19 (2.55 % of base) : 428138.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
          35 (2.55 % of base) : 704524.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
          19 (2.53 % of base) : 290263.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
           7 (2.49 % of base) : 260524.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
           7 (2.49 % of base) : 101323.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)

Top method improvements (percentages):
         -19 (-4.40 % of base) : 291677.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -39 (-4.04 % of base) : 456692.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -13 (-3.02 % of base) : 700973.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
         -28 (-2.56 % of base) : 424351.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
         -11 (-2.55 % of base) : 218083.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 335121.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 554571.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 209251.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 227580.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 241900.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 352639.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 397508.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 429225.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 583809.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.55 % of base) : 606732.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -11 (-2.52 % of base) : 218255.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -13 (-2.34 % of base) : 194793.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
         -21 (-1.99 % of base) : 649755.dasm - System.Collections.Generic.HashSet`1[System.Nullable`1[short]]:AddIfNotPresent(System.Nullable`1[short],byref):ubyte:this (Tier1)
         -18 (-1.97 % of base) : 647004.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_ListSingle(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Collections.Generic.List`1[float]]:this (Tier1)
         -17 (-1.91 % of base) : 370808.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)



osx arm64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,442,140 +4
coreclr_tests.run.osx.arm64.checked.mch 486,418,056 -672
libraries_tests.run.osx.arm64.Release.mch 324,596,964 -420

FullOpts (-1,088 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,140,840 +4
coreclr_tests.run.osx.arm64.checked.mch 153,805,132 -672
libraries_tests.run.osx.arm64.Release.mch 120,881,116 -420

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

+0 (0.00%) : 65589.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)

@@ -52,17 +52,17 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.00 G_M8313_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz cmp w19, w20
- beq G_M8313_IG10
+ beq G_M8313_IG11
;; size=8 bbWeight=1 PerfScore 1.50 G_M8313_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz cmp w19, w23
- bhs G_M8313_IG09
+ bhs G_M8313_IG10
ubfiz x0, x19, #2, #32 add x24, x22, x0 ; byrRegs +[x24] ldr w1, [x24] cmp w20, w23
- bhs G_M8313_IG09
+ bhs G_M8313_IG10
ubfiz x0, x20, #2, #32 add x25, x22, x0 ; byrRegs +[x25] @@ -72,25 +72,20 @@ G_M8313_IG03: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22 movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x0, x3
- bne G_M8313_IG11
+ bne G_M8313_IG09
cmp w1, w2
- bge G_M8313_IG05
+ bge G_M8313_IG08
;; size=72 bbWeight=1 PerfScore 19.50 G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref ; gcrRegs -[x21] ; byrRegs -[x22] movn w3, #0
- b G_M8313_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref - cmp w1, w2 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref, isz
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref, isz
cmp w3, #0
- bgt G_M8313_IG08
+ bgt G_M8313_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x24-x25] ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -99,19 +94,34 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M8313_IG08: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, gcvars, byref
+G_M8313_IG07: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, gcvars, byref
; byrRegs +[x24-x25] ldr w0, [x24] ldr w1, [x25] str w1, [x24] str w0, [x25]
- b G_M8313_IG07
+ b G_M8313_IG06
;; size=20 bbWeight=0.45 PerfScore 4.04
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=3000000 {x24 x25}, byref + cmp w1, w2 + cset x3, gt + b G_M8313_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.73 +G_M8313_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=3000000 {x24 x25}, byref + ; gcrRegs +[x21] + ldr x0, [x21, #0x08] + ; gcrRegs +[x0] + ldr x3, [x21, #0x18] + blr x3 + ; gcrRegs -[x0 x21] + sxtw w3, w0 + b G_M8313_IG05 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x24-x25] bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x21] ; byrRegs +[x22] movz x0, #0xD1FFAB1E @@ -127,18 +137,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22 blr x2 b G_M8313_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=3000000 {x24 x25}, byref - ; byrRegs -[x22] +[x24-x25] - ldr x0, [x21, #0x08] - ; gcrRegs +[x0] - ldr x3, [x21, #0x18] - blr x3 - ; gcrRegs -[x0 x21] - sxtw w3, w0 - b G_M8313_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 24, PerfScore 42.86, instruction count 66, allocated bytes for code 264 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 264, prolog size 24, PerfScore 42.58, instruction count 66, allocated bytes for code 264 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 71053.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -54,59 +54,54 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.00 G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50 G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32 ldr w1, [x21, x24] cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2] ldr x0, [x22, #0x18] movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x20] ldr w3, [x0, #0x08] cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #2, #32 add x4, x4, #16 ldr w4, [x0, x4] cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #2, #32 add x3, x3, #16 ldr w0, [x0, x3] ; gcrRegs -[x0] cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=112 bbWeight=1 PerfScore 38.50 G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x22] movn w3, #0
- b G_M64750_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2 cmp w3, #0 csel w25, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21] ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -115,7 +110,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21] ldr w0, [x21, x24] add x1, x21, x24 @@ -123,13 +118,29 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w2, [x21, w19, UXTW #2] str w2, [x1] str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.46 PerfScore 4.35
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; byrRegs -[x1] + cmp w4, w0 + cset x3, gt + b G_M64750_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.72 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref + ; gcrRegs +[x22] + ldr x0, [x22, #0x08] + ; gcrRegs +[x0] + ldr x3, [x22, #0x18] + blr x3 + ; gcrRegs -[x0 x22] + sxtw w25, w0 + b G_M64750_IG06 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22] ; byrRegs +[x21] movz x0, #0xD1FFAB1E @@ -145,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 blr x2 b G_M64750_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - ldr x0, [x22, #0x08] - ; gcrRegs +[x0] - ldr x3, [x22, #0x18] - blr x3 - ; gcrRegs -[x0 x22] - sxtw w25, w0 - b G_M64750_IG07 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 24, PerfScore 63.67, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 320, prolog size 24, PerfScore 63.40, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 83617.dasm - System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeysDefaultComparerNoNext_Ascending(int,int):int:this (Tier1)

@@ -52,31 +52,31 @@ G_M5168_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ldr w0, [x0, #0x0C] ; byrRegs -[x0] cmp w4, w0
- bge G_M5168_IG04
+ bge G_M5168_IG06
;; size=64 bbWeight=1 PerfScore 20.50 G_M5168_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movn w3, #0
- b G_M5168_IG05 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M5168_IG04: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M5168_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M5168_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w1, w2 cmp w3, #0 csel w0, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M5168_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M5168_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M5168_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M5168_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + cmp w4, w0 + cset x3, gt + b G_M5168_IG04 + ;; size=12 bbWeight=0.36 PerfScore 0.72 +G_M5168_IG07: ; 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 116, prolog size 8, PerfScore 26.82, instruction count 29, allocated bytes for code 116 (MethodHash=f7faebcf) for method System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
+; Total bytes of code 116, prolog size 8, PerfScore 26.54, instruction count 29, allocated bytes for code 116 (MethodHash=f7faebcf) for method System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 83388.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -45,39 +45,34 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 7.00 G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w19
- beq G_M64750_IG10
+ beq G_M64750_IG11
;; size=8 bbWeight=1 PerfScore 1.50 G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w23
- bhs G_M64750_IG09
+ bhs G_M64750_IG10
ubfiz x24, x20, #2, #32 ldr w1, [x21, x24] cmp w19, w23
- bhs G_M64750_IG09
+ bhs G_M64750_IG10
ldr w2, [x21, w19, UXTW #2] ldr x0, [x22, #0x18] movz x3, #0xD1FFAB1E // code for System.Collections.Sort`1+<>c[int]:<Array_Comparison>b__13_0(int,int):int:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x0, x3
- bne G_M64750_IG11
+ bne G_M64750_IG09
cmp w1, w2
- bge G_M64750_IG05
+ bge G_M64750_IG08
;; size=60 bbWeight=1 PerfScore 17.50 G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x22] movn w3, #0
- b G_M64750_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - cmp w1, w2 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w3, #0
- bgt G_M64750_IG08
+ bgt G_M64750_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] @@ -85,7 +80,7 @@ G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x40 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M64750_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21] ldr w0, [x21, x24] add x1, x21, x24 @@ -93,13 +88,29 @@ G_M64750_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w2, [x21, w19, UXTW #2] str w2, [x1] str w0, [x21, w19, UXTW #2]
- b G_M64750_IG07
+ b G_M64750_IG06
;; size=24 bbWeight=0.44 PerfScore 4.22
-G_M64750_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x1 x21]
+G_M64750_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; byrRegs -[x1] + cmp w1, w2 + cset x3, gt + b G_M64750_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.72 +G_M64750_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref + ; gcrRegs +[x22] + ldr x0, [x22, #0x08] + ; gcrRegs +[x0] + ldr x3, [x22, #0x18] + blr x3 + ; gcrRegs -[x0 x22] + sxtw w3, w0 + b G_M64750_IG05 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22] ; byrRegs +[x21] movz x0, #8 @@ -115,17 +126,8 @@ G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 blr x2 b G_M64750_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - ldr x0, [x22, #0x08] - ; gcrRegs +[x0] - ldr x3, [x22, #0x18] - blr x3 - ; gcrRegs -[x0 x22] - sxtw w3, w0 - b G_M64750_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 20, PerfScore 38.04, instruction count 62, allocated bytes for code 248 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 248, prolog size 20, PerfScore 37.76, instruction count 62, allocated bytes for code 248 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 83616.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -54,28 +54,28 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.00 G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50 G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32 ldr w1, [x21, x24] cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2] ldr x0, [x22, #0x18] movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x20] ldr w3, [x0, #0x08] cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #5, #32 add x4, x4, #16 add x4, x0, x4 @@ -83,7 +83,7 @@ G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 ldr w4, [x4, #0x0C] ; byrRegs -[x4] cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #5, #32 add x3, x3, #16 add x0, x0, x3 @@ -92,27 +92,22 @@ G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 ldr w0, [x0, #0x0C] ; byrRegs -[x0] cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=120 bbWeight=1 PerfScore 39.50 G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x22] movn w3, #0
- b G_M64750_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2 cmp w3, #0 csel w25, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21] ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -121,7 +116,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21] ldr w0, [x21, x24] add x1, x21, x24 @@ -129,13 +124,29 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w2, [x21, w19, UXTW #2] str w2, [x1] str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.46 PerfScore 4.36
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; byrRegs -[x1] + cmp w4, w0 + cset x3, gt + b G_M64750_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.73 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref + ; gcrRegs +[x22] + ldr x0, [x22, #0x08] + ; gcrRegs +[x0] + ldr x3, [x22, #0x18] + blr x3 + ; gcrRegs -[x0 x22] + sxtw w25, w0 + b G_M64750_IG06 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22] ; byrRegs +[x21] movz x0, #0xD1FFAB1E @@ -151,17 +162,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 blr x2 b G_M64750_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - ldr x0, [x22, #0x08] - ; gcrRegs +[x0] - ldr x3, [x22, #0x18] - blr x3 - ; gcrRegs -[x0 x22] - sxtw w25, w0 - b G_M64750_IG07 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 64.68, instruction count 82, allocated bytes for code 328 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 328, prolog size 24, PerfScore 64.40, instruction count 82, allocated bytes for code 328 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

+4 (+2.63%) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1862
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1862
; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -47,40 +47,23 @@ G_M38662_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {} mov x15, x1 ; gcrRegs +[x15] tst w3, #255
- bne G_M38662_IG12
+ bne G_M38662_IG13
;; size=12 bbWeight=1 PerfScore 2.00 G_M38662_IG03: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x1] mov x14, x2 ; gcrRegs +[x14]
- cbz x14, G_M38662_IG07
+ cbz x14, G_M38662_IG04
mov w12, wzr ldr w14, [x14, #0x08] ; gcrRegs -[x14] cmp w14, #0
- ble G_M38662_IG07
+ bgt G_M38662_IG08
;; size=24 bbWeight=1.00 PerfScore 6.50
-G_M38662_IG04: ; bbWeight=0.46, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref - add xip0, x2, #16 - ; byrRegs +[xip0] - ;; size=4 bbWeight=0.46 PerfScore 0.23 -G_M38662_IG05: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz - ldr x1, [xip0, w12, UXTW #3] - ; gcrRegs +[x1] - ldrsh w1, [x1, #0x10] - ; gcrRegs -[x1] - tbnz w1, #0, G_M38662_IG11 - ;; size=12 bbWeight=0.85 PerfScore 5.97 -G_M38662_IG06: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz - add w12, w12, #1 - cmp w12, w14 - blt G_M38662_IG05 - ;; size=12 bbWeight=0.85 PerfScore 1.71 -G_M38662_IG07: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref - ; byrRegs -[xip0]
+G_M38662_IG04: ; bbWeight=1.00, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
mov w1, wzr ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M38662_IG08: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
+G_M38662_IG05: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref, isz
mov w14, #122 strb w14, [x0, #0x12] add x14, x0, #8 @@ -89,9 +72,9 @@ G_M38662_IG08: ; bbWeight=1, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 { ; gcrRegs -[x15] ; byrRegs -[x14] tst w1, #255
- bne G_M38662_IG13
+ bne G_M38662_IG14
;; size=24 bbWeight=1 PerfScore 4.50
-G_M38662_IG09: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG06: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
add x14, x0, #24 ; byrRegs +[x14] mov x15, x2 @@ -100,31 +83,51 @@ G_M38662_IG09: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, b ; gcrRegs -[x0 x2 x15] ; byrRegs -[x14] ;; size=12 bbWeight=1 PerfScore 2.00
-G_M38662_IG10: ; bbWeight=1, epilog, nogc, extend
+G_M38662_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M38662_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
+G_M38662_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x2 x15]
+ add xip0, x2, #16 + ; byrRegs +[xip0] + ;; size=4 bbWeight=0.46 PerfScore 0.23 +G_M38662_IG09: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz + ldr x1, [xip0, w12, UXTW #3] + ; gcrRegs +[x1] + ldrsh w1, [x1, #0x10] + ; gcrRegs -[x1] + tbnz w1, #0, G_M38662_IG12 + ;; size=12 bbWeight=0.85 PerfScore 5.97 +G_M38662_IG10: ; bbWeight=0.85, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=10000 {xip0}, byref, isz + add w12, w12, #1 + cmp w12, w14 + blt G_M38662_IG09 + ;; size=12 bbWeight=0.85 PerfScore 1.71 +G_M38662_IG11: ; bbWeight=0.46, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref + ; byrRegs -[xip0] + b G_M38662_IG04 + ;; size=4 bbWeight=0.46 PerfScore 0.46 +G_M38662_IG12: ; bbWeight=0, gcrefRegs=8005 {x0 x2 x15}, byrefRegs=0000 {}, byref
mov w1, #1
- b G_M38662_IG08
+ b G_M38662_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M38662_IG12: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG13: ; bbWeight=0, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15] +[x1] mov x15, x1 ; gcrRegs +[x15] mov w1, #1 ; gcrRegs -[x1]
- b G_M38662_IG08
+ b G_M38662_IG05
;; size=12 bbWeight=0 PerfScore 0.00
-G_M38662_IG13: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
+G_M38662_IG14: ; bbWeight=0, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x15] mov w1, #1 strh w1, [x0, #0x10]
- b G_M38662_IG09
+ b G_M38662_IG06
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 152, prolog size 8, PerfScore 26.91, instruction count 38, allocated bytes for code 152 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
+; Total bytes of code 156, prolog size 8, PerfScore 27.37, instruction count 39, allocated bytes for code 156 (MethodHash=762c68f9) for method Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
; ============================================================ Unwind Info: @@ -135,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 39 (0x00027) Actual length = 156 (0x00009c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-20 (-10.87%) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)

@@ -2,20 +2,22 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> x21 single-def -; V01 arg1 [V01,T01] ( 4, 3 ) long -> x20 single-def -; V02 arg2 [V02,T00] ( 10, 6.82) ref -> x19 class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> x20 single-def +; V01 arg1 [V01,T02] ( 3, 3 ) long -> x21 single-def +; V02 arg2 [V02,T00] ( 7, 7 ) ref -> x19 class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> x1 "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -24,43 +26,16 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] mov fp, sp
- mov x21, x0 - ; byrRegs +[x21] - mov x20, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x21, x1
mov x19, x2 ; gcrRegs +[x19] ;; size=28 bbWeight=1 PerfScore 5.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - cbz x19, G_M14814_IG06
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + cbnz x19, G_M14814_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - mov x0, x20 - mov x1, x19 - ; gcrRegs +[x1] - bl <unknown method> - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - cbz x19, G_M14814_IG07 - ;; size=20 bbWeight=0.99 PerfScore 3.48 -G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ;; size=8 bbWeight=0.82 PerfScore 0.82 -G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - b <unknown method> - ; gcr arg pop 0 - ;; size=16 bbWeight=0.82 PerfScore 4.09 -G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz - ; gcrRegs -[x1] - ; byrRegs -[x0]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -73,7 +48,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x20
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M14814_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + mov x0, x21
mov x1, x19 ; gcrRegs +[x1] bl <unknown method> @@ -81,11 +58,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M14814_IG04 - ;; size=56 bbWeight=0.01 PerfScore 0.07 -G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19] - ; byrRegs -[x21]
+ cbz x19, G_M14814_IG06 + mov x0, x20 + ; gcrRegs -[x0] + ; byrRegs +[x0] + mov x1, x19 + ; gcrRegs +[x1] + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + b <unknown method> + ; gcr arg pop 0 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x1 x19] + ; byrRegs -[x0 x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -109,7 +98,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 28, PerfScore 14.46, instruction count 46, allocated bytes for code 184 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 164, prolog size 28, PerfScore 21.50, instruction count 41, allocated bytes for code 164 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.67%) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)

@@ -2,37 +2,38 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3648
; No matching PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 4, 2 ) byref -> x0 single-def -; V01 arg1 [V01,T08] ( 5, 3 ) long -> x1 single-def -; V02 arg2 [V02,T07] ( 5, 3 ) ref -> x2 class-hnd single-def <System.Object> -;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref -;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T10] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> -; V06 tmp2 [V06,T11] ( 2, 0 ) int -> x19 "Inline return value spill temp" -; V07 tmp3 [V07,T02] ( 4, 360.15) byref -> x3 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 3, 16.31) long -> x4 "Inlining Arg" -; V09 tmp5 [V09,T01] ( 4, 711.15) int -> x5 "Inline stloc first use temp" -; V10 tmp6 [V10,T00] ( 5,1409 ) int -> x6 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 18.46) byref -> x7 "Inline stloc first use temp" -; V12 tmp8 [V12,T03] ( 5, 96 ) int -> x8 "Inline stloc first use temp" -; V13 tmp9 [V13,T06] ( 2, 12.31) long -> x9 "Inline stloc first use temp" -; V14 tmp10 [V14,T12] ( 3, 0 ) long -> x19 "Inline stloc first use temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V00 arg0 [V00,T10] ( 4, 3.42) byref -> x0 single-def +; V01 arg1 [V01,T08] ( 5, 11.96) long -> x1 single-def +; V02 arg2 [V02,T09] ( 5, 4.42) ref -> x2 class-hnd single-def <System.Object> +;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> +; V06 tmp2 [V06,T12] ( 2, 2.00) int -> x9 "Inline return value spill temp" +; V07 tmp3 [V07,T04] ( 4, 67.48) byref -> x3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T05] ( 3, 66.04) long -> x4 "Inlining Arg" +; V09 tmp5 [V09,T03] ( 4,100.95) int -> x5 "Inline stloc first use temp" +; V10 tmp6 [V10,T00] ( 5,138.86) int -> x6 "Inline stloc first use temp" +; V11 tmp7 [V11,T02] ( 5,101.32) byref -> x7 "Inline stloc first use temp" +; V12 tmp8 [V12,T01] ( 5,122.66) int -> x8 "Inline stloc first use temp" +; V13 tmp9 [V13,T06] ( 2, 62.04) long -> x9 "Inline stloc first use temp" +; V14 tmp10 [V14,T07] ( 3, 17.13) long -> x9 "Inline stloc first use temp" +;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+G_M34926_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref ; gcrRegs +[x2] ; byrRegs +[x0] @@ -56,7 +57,7 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by lsr x5, x5, x6 mov w6, wzr ;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+G_M34926_IG03: ; bbWeight=31.02, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w7, w5, #1 mov w8, #24 smull x7, w7, w8 @@ -66,40 +67,56 @@ G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x ldr x9, [x7, #0x08] and w8, w8, #0xD1FFAB1E cmp x9, x4
- beq G_M34926_IG11 - ;; size=36 bbWeight=6.15 PerfScore 70.77 -G_M34926_IG04: ; bbWeight=77.54, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ beq G_M34926_IG07 + ;; size=36 bbWeight=31.02 PerfScore 356.71 +G_M34926_IG04: ; bbWeight=29.41, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- cbz w8, G_M34926_IG09 - ;; size=4 bbWeight=77.54 PerfScore 77.54 -G_M34926_IG05: ; bbWeight=352, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ cbz w8, G_M34926_IG12 + ;; size=4 bbWeight=29.41 PerfScore 29.41 +G_M34926_IG05: ; bbWeight=34.46, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w6, w6, #1 add w5, w5, w6
- ldr w7, [x3, #0x04] - and w5, w5, w7
+ ldr w9, [x3, #0x04] + and w5, w5, w9
cmp w6, #8 blt G_M34926_IG03
- ;; size=24 bbWeight=352 PerfScore 2112.00 -G_M34926_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
+ ;; size=24 bbWeight=34.46 PerfScore 206.79 +G_M34926_IG06: ; bbWeight=0.90, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs -[x3]
- b G_M34926_IG09 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M34926_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz - cmp w19, #1 - bne G_M34926_IG09
+ b G_M34926_IG12 + ;; size=4 bbWeight=0.90 PerfScore 0.90 +G_M34926_IG07: ; bbWeight=8.06, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, byref, isz + ; byrRegs +[x3 x7] + ldr x9, [x7, #0x10] + eor x9, x9, x1 + cmp x9, #1 + bhi G_M34926_IG04 + ;; size=16 bbWeight=8.06 PerfScore 40.32 +G_M34926_IG08: ; bbWeight=0.20, gcrefRegs=0004 {x2}, byrefRegs=0081 {x0 x7}, byref, isz + ; byrRegs -[x3] + dmb ishld + ldr w3, [x7] + cmp w8, w3 + bne G_M34926_IG12 + ;; size=16 bbWeight=0.20 PerfScore 2.92 +G_M34926_IG09: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs -[x7] + cmp w9, #1 + bne G_M34926_IG12 + ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M34926_IG10: ; bbWeight=0.52, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
mov x1, x2 ; gcrRegs +[x1] bl <unknown method> ; gcrRegs -[x1-x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M34926_IG08: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.78 +G_M34926_IG11: ; bbWeight=0.52, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04 +G_M34926_IG12: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x2] ; byrRegs +[x0] movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) @@ -110,39 +127,24 @@ G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 { ; gcrRegs -[x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M34926_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=20 bbWeight=0.90 PerfScore 4.92 +G_M34926_IG13: ; bbWeight=0.90, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, gcvars, byref, isz - ; gcrRegs +[x2] - ; byrRegs +[x0 x3 x7] - ldr x9, [x7, #0x10] - eor x19, x9, x1 - cmp x19, #1 - bhi G_M34926_IG04 - dmb ishld - ldr w3, [x7] - ; byrRegs -[x3] - cmp w8, w3 - bne G_M34926_IG09 - b G_M34926_IG07 - ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.90 PerfScore 1.79
-; Total bytes of code 240, prolog size 12, PerfScore 2280.31, instruction count 60, allocated bytes for code 240 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 666.08, instruction count 56, allocated bytes for code 224 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -153,10 +155,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-5.95%) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)

@@ -2,25 +2,28 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 98 ) long -> x20 single-def -; V01 arg1 [V01,T07] ( 3, 98 ) long -> x21 single-def -; V02 arg2 [V02,T05] ( 5,100 ) int -> x19 single-def -; V03 loc0 [V03,T01] ( 5,385 ) int -> x23
+; V00 arg0 [V00,T07] ( 3, 74.00) long -> x20 single-def +; V01 arg1 [V01,T08] ( 3, 74.00) long -> x21 single-def +; V02 arg2 [V02,T06] ( 5, 76.00) int -> x19 single-def +; V03 loc0 [V03,T01] ( 5,289.00) int -> x23
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T10] ( 3, 6.00) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp4 [V08,T02] ( 2,384 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String> -; V09 tmp5 [V09,T03] ( 2,384 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp4 [V08,T02] ( 2,288.00) ref -> x26 class-hnd exact "Inlining Arg" <System.String> +; V09 tmp5 [V09,T03] ( 2,288.00) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T04] ( 3,288 ) long -> x25 "CSE - aggressive" -; V12 cse1 [V12,T08] ( 4, 99 ) long -> x22 "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 3,216.00) long -> x25 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 4, 75.00) long -> x22 "CSE - aggressive" +; V13 cse2 [V13,T05] ( 5, 88.00) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,10 +44,23 @@ G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x22, #2 LSL #32 ldr x0, [x22] ; gcrRegs +[x0]
- cbnz x0, G_M44736_IG07
+ cbz x0, G_M44736_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ;; size=44 bbWeight=0.80 PerfScore 6.80 +G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -68,8 +84,8 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, wzr cmp w19, #0 ble G_M44736_IG08
- ;; size=72 bbWeight=1 PerfScore 13.50 -G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1.00 PerfScore 13.50 +G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x24, [x22] ; gcrRegs +[x24] sbfiz x25, x23, #3, #32 @@ -95,52 +111,36 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x24 x26]
- cbz w0, G_M44736_IG06 - ;; size=72 bbWeight=96 PerfScore 2304.00 -G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M44736_IG07 + ;; size=72 bbWeight=72.00 PerfScore 1728.00 +G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=28.80 PerfScore 216.00 +G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1 cmp w23, w19
- bge G_M44736_IG08 - b G_M44736_IG04 - ;; size=16 bbWeight=96 PerfScore 288.00 -G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG05 - ;; size=48 bbWeight=0.32 PerfScore 3.00 -G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG03 - ;; size=48 bbWeight=0.01 PerfScore 0.06 -G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ blt G_M44736_IG05 + ;; size=12 bbWeight=72.00 PerfScore 144.00 +G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 336, prolog size 24, PerfScore 2621.07, instruction count 84, allocated bytes for code 336 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 2126.80, instruction count 79, allocated bytes for code 316 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================ Unwind Info: @@ -151,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.35%) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)

@@ -2,55 +2,124 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T03] ( 6, 41.78) int -> x19 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T01] ( 5, 39 ) int -> x20 -; V03 loc2 [V03,T08] ( 3, 0 ) int -> x0 -; V04 loc3 [V04,T06] ( 7, 0 ) int -> x20
+; V02 loc1 [V02,T00] ( 5,165.21) int -> x1 +; V03 loc2 [V03,T02] ( 3, 76.26) int -> x2 +; V04 loc3 [V04,T01] ( 8,119.79) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V08 tmp3 [V08,T02] ( 2, 39 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -;* V09 tmp4 [V09,T03] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP -; V10 tmp5 [V10,T00] ( 2, 78 ) byref -> x1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V11 tmp6 [V11,T04] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -; V12 tmp7 [V12,T09] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T06] ( 2, 38.89) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +;* V09 tmp4 [V09,T08] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T07] ( 2, 2 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V11 tmp6 [V11,T09] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V12 tmp7 [V12,T04] ( 3, 40.27) int -> x0 "fgMakeTemp is creating a new local variable"
; V13 tmp8 [V13,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 rat0 [V14,T10] ( 3, 0 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V14 rat0 [V14,T05] ( 3, 40.27) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0
-G_M22313_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp mov w19, w0 ;; size=16 bbWeight=1 PerfScore 3.00 G_M22313_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M22313_IG04 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M22313_IG03: ; bbWeight=39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E
+ tbnz w19, #31, G_M22313_IG15 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + mov w1, wzr + ;; size=20 bbWeight=1 PerfScore 3.00 +G_M22313_IG03: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + ldr w2, [x0, w1, UXTW #2] + cmp w2, w19 + bge G_M22313_IG13 + ;; size=12 bbWeight=37.89 PerfScore 170.53 +G_M22313_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + add w1, w1, #1 + cmp w1, #72 + blt G_M22313_IG03 + ;; size=12 bbWeight=42.11 PerfScore 84.21 +G_M22313_IG05: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0] + orr w20, w19, #1 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + bge G_M22313_IG08 + ;; size=16 bbWeight=0.53 PerfScore 1.32 +G_M22313_IG06: ; bbWeight=25.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov w0, w20 + movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- mov w20, wzr - b G_M22313_IG05 - ;; size=20 bbWeight=39 PerfScore 117.00 -G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + cbnz w0, G_M22313_IG10 + ;; size=28 bbWeight=25.81 PerfScore 180.70 +G_M22313_IG07: ; bbWeight=28.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w20, #2 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + blt G_M22313_IG06 + ;; size=16 bbWeight=28.68 PerfScore 71.71 +G_M22313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w19 + ;; size=4 bbWeight=0.36 PerfScore 0.18 +G_M22313_IG09: ; bbWeight=0.36, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.36 PerfScore 1.08 +G_M22313_IG10: ; bbWeight=6.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + sub w0, w20, #1 + movz w1, #0xD1FFAB1E + movk w1, #0xD1FFAB1E LSL #16 + smull x1, w1, w0 + asr x1, x1, #32 + asr w2, w1, #4 + add w1, w2, w1, LSR #31 + mov w2, #101 + msub w0, w1, w2, w0 + cbz w0, G_M22313_IG07 + ;; size=40 bbWeight=6.71 PerfScore 67.12 +G_M22313_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w20 + ;; size=4 bbWeight=0.17 PerfScore 0.08 +G_M22313_IG12: ; bbWeight=0.17, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.17 PerfScore 0.50 +G_M22313_IG13: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w2 + ;; size=4 bbWeight=0.47 PerfScore 0.24 +G_M22313_IG14: ; bbWeight=0.47, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.47 PerfScore 1.42 +G_M22313_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -61,7 +130,7 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -69,73 +138,15 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M22313_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz - ; byrRegs +[x1] - ldr w0, [x1, w20, UXTW #2] - cmp w0, w19 - bge G_M22313_IG06 - add w20, w20, #1 - cmp w20, #72 - blt G_M22313_IG05 - orr w20, w19, #1 - b G_M22313_IG09 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M22313_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x1] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov w0, w20 - movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M22313_IG08 - sub w0, w20, #1 - movz w1, #0xD1FFAB1E - movk w1, #0xD1FFAB1E LSL #16 - smull x1, w1, w0 - asr x1, x1, #32 - asr w2, w1, #4 - add w1, w2, w1, LSR #31 - mov w2, #101 - msub w0, w1, w2, w0 - cbnz w0, G_M22313_IG11 - ;; size=68 bbWeight=0 PerfScore 0.00 -G_M22313_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add w20, w20, #2 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movn w0, #0xD1FFAB1E LSL #16 - cmp w20, w0 - blt G_M22313_IG07 - mov w0, w19 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M22313_IG10: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, w20 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG12: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00
+ brk_unix #0 + ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 121.00, instruction count 69, allocated bytes for code 276 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 585.07, instruction count 72, allocated bytes for code 288 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+5.56%) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)

@@ -2,36 +2,39 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data ; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 2.83) long -> x0 single-def -; V01 arg1 [V01,T05] ( 6, 15.64) long -> x19 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) long -> x2 single-def -; V03 loc0 [V03,T02] ( 18, 51.36) long -> x20 -; V04 loc1 [V04,T06] ( 14, 11.73) int -> x21
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> x0 single-def +; V01 arg1 [V01,T05] ( 6, 19.60) long -> x19 single-def +; V02 arg2 [V02,T07] ( 3, 3 ) long -> x2 single-def +; V03 loc0 [V03,T02] ( 18, 91.25) long -> x20 +; V04 loc1 [V04,T08] ( 14, 4.44) int -> x21
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T04] ( 6, 18.08) long -> x3 -; V07 loc4 [V07,T10] ( 5, 2.64) long -> x2 -; V08 loc5 [V08,T07] ( 2, 8.41) long -> x1
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> x3 +; V07 loc4 [V07,T09] ( 5, 3.54) long -> x2 +; V08 loc5 [V08,T06] ( 2, 17.38) long -> x1
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T00] ( 6,100.29) long -> x3 "Inlining Arg" -; V13 tmp4 [V13,T01] ( 5, 83.57) byref -> x4 "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> x3 "Inlining Arg" +; V13 tmp4 [V13,T01] ( 5,169.35) byref -> x4 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T03] ( 3, 30.76) byref -> x1 single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> x1 single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T11] ( 3, 0.93) byref -> x0 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> x0 "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -45,18 +48,24 @@ G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov x20, xzr cmp x2, #4
- blo G_M6063_IG06
+ bhs G_M6063_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6063_IG03: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbz w2, #1, G_M6063_IG13 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG09 + ;; size=4 bbWeight=0.32 PerfScore 0.32 +G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x2, #4
- ;; size=4 bbWeight=0.05 PerfScore 0.03 -G_M6063_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.45 PerfScore 0.22 +G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x3, x20, #1 ldr x3, [x0, x3] tst x3, #0xD1FFAB1E
- bne G_M6063_IG12 - ;; size=16 bbWeight=0.51 PerfScore 2.79 -G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne G_M6063_IG18 + ;; size=16 bbWeight=18.82 PerfScore 103.49 +G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x19, x20 strb w3, [x4] lsr x3, x3, #16 @@ -67,52 +76,44 @@ G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre strb w3, [x4, #0x03] add x20, x20, #4 cmp x20, x1
- bls G_M6063_IG04 - ;; size=44 bbWeight=8.36 PerfScore 79.39 -G_M6063_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbz w2, #1, G_M6063_IG09 - ;; size=4 bbWeight=0.07 PerfScore 0.07 -G_M6063_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bls G_M6063_IG06 + ;; size=44 bbWeight=16.93 PerfScore 160.88 +G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG03 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x1, x20, #1 ldr w21, [x0, x1] tst w21, #0xD1FFAB1E
- bne G_M6063_IG14 - ;; size=16 bbWeight=0.32 PerfScore 1.75 -G_M6063_IG08: ; bbWeight=5.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M6063_IG12 + ;; size=16 bbWeight=0.32 PerfScore 1.79 +G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tst w21, #0xD1FFAB1E + bne G_M6063_IG17 + ;; size=8 bbWeight=0.53 PerfScore 0.80 +G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG16 + ;; size=4 bbWeight=0.43 PerfScore 0.43 +G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, x19, x20 strb w21, [x1] lsr w3, w21, #16 strb w3, [x1, #0x01] add x20, x20, #2
- ;; size=20 bbWeight=5.13 PerfScore 20.51 -G_M6063_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbnz w2, #0, G_M6063_IG16 - ;; size=4 bbWeight=0.52 PerfScore 0.52 -G_M6063_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.68 +G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbnz w2, #0, G_M6063_IG20 + ;; size=4 bbWeight=0.47 PerfScore 0.47 +G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x20
- ;; size=4 bbWeight=0.26 PerfScore 0.13 -G_M6063_IG11: ; bbWeight=0.26, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.26 PerfScore 1.31 -G_M6063_IG12: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw w21, w3 - tst w21, #0xD1FFAB1E - bne G_M6063_IG14 - ;; size=12 bbWeight=0.19 PerfScore 0.38 -G_M6063_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, x19, x20 - strb w21, [x0] - lsr w1, w21, #16 - strb w1, [x0, #0x01] - lsr x21, x3, #32 - add x20, x20, #2 - ;; size=24 bbWeight=0.15 PerfScore 0.77 -G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tst w21, #0xD1FFAB1E - bne G_M6063_IG15
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -125,25 +126,39 @@ G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x2, [x2] blr x2 ; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00 -G_M6063_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.43 PerfScore 3.61 +G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tst w21, #0xD1FFAB1E
- beq G_M6063_IG17
+ bne G_M6063_IG14 + b G_M6063_IG21 + ;; size=12 bbWeight=0.53 PerfScore 1.33 +G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtw w21, w3 + tst w21, #0xD1FFAB1E + bne G_M6063_IG10 + ;; size=12 bbWeight=0.38 PerfScore 0.75 +G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, x19, x20 + strb w21, [x0] + lsr w1, w21, #16 + strb w1, [x0, #0x01] + lsr x21, x3, #32 + add x20, x20, #2
b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M6063_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lsl x1, x20, #1 - ldrh w21, [x0, x1]
+ ;; size=28 bbWeight=0.20 PerfScore 1.17 +G_M6063_IG20: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lsl x2, x20, #1 + ldrh w21, [x0, x2]
cmp w21, #127
- bhi G_M6063_IG10 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M6063_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bhi G_M6063_IG14 + ;; size=16 bbWeight=0.37 PerfScore 2.06 +G_M6063_IG21: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb w21, [x19, x20] add x20, x20, #1
- b G_M6063_IG10 - ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M6063_IG14 + ;; size=12 bbWeight=0.30 PerfScore 0.75
-; Total bytes of code 288, prolog size 20, PerfScore 113.65, instruction count 72, allocated bytes for code 288 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
+; Total bytes of code 304, prolog size 20, PerfScore 291.49, instruction count 76, allocated bytes for code 304 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
; ============================================================ Unwind Info: @@ -154,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+5.59%) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)

@@ -2,39 +2,45 @@ ; Emitting BLENDED_CODE for generic ARM64 - Apple ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 11, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase> -; V01 arg1 [V01,T02] ( 4, 2.29) int -> x21 single-def -; V02 arg2 [V02,T01] ( 9, 2.43) int -> x20 -; V03 arg3 [V03,T04] ( 6, 2 ) int -> x23 single-def -; V04 arg4 [V04,T03] ( 9, 2 ) ref -> x22 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T05] ( 11, 5.22) ref -> x20 class-hnd single-def <System.Reflection.MethodBase> +; V01 arg1 [V01,T06] ( 4, 4.00) int -> x21 single-def +; V02 arg2 [V02,T04] ( 9, 5.91) int -> x19 +; V03 arg3 [V03,T08] ( 6, 3.65) int -> x23 single-def +; V04 arg4 [V04,T07] ( 8, 3.83) ref -> x22 class-hnd single-def <System.Type[]>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]> ;* V06 loc1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref ;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref ;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T08] ( 5, 0 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo> -; V10 loc5 [V10,T07] ( 7, 0 ) int -> x19 -; V11 loc6 [V11,T10] ( 3, 0 ) ref -> x0 class-hnd <System.Type>
+; V09 loc4 [V09,T13] ( 4, 0.46) ref -> x21 class-hnd single-def <System.Reflection.ParameterInfo> +; V10 loc5 [V10,T00] ( 6, 39.53) int -> x19 +; V11 loc6 [V11,T01] ( 3, 19.36) ref -> x0 class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V14 tmp2 [V14,T13] ( 3, 0 ) int -> x0 "Span.get_Item index" -; V15 tmp3 [V15,T15] ( 2, 0 ) int -> x0 "Span.get_Item index"
+; V14 tmp2 [V14,T17] ( 3, 0.33) int -> x0 "Span.get_Item index" +; V15 tmp3 [V15,T12] ( 2, 0.49) int -> x0 "Span.get_Item index"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> -;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> -; V20 tmp8 [V20,T09] ( 4, 0 ) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP -; V21 tmp9 [V21,T06] ( 8, 0 ) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP -;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP -;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP -; V24 tmp12 [V24,T11] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V25 tmp13 [V25,T12] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V26 cse0 [V26,T05] ( 3, 0.00) ref -> x1 "CSE - conservative"
+;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> +;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> +; V22 tmp10 [V22,T09] ( 4, 2.98) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP +; V23 tmp11 [V23,T02] ( 9, 11.61) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP +;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP +;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP +; V26 tmp14 [V26,T16] ( 3, 0.33) ref -> x0 single-def "argument with side effect" +; V27 tmp15 [V27,T11] ( 3, 0.73) ref -> x0 single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 0.34) long -> x24 "CSE - conservative" +; V29 cse1 [V29,T03] ( 2, 8.66) byref -> x22 hoist "CSE - aggressive" +; V30 cse2 [V30,T10] ( 6, 2.54) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 0 @@ -44,36 +50,18 @@ G_M44091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x20] stp x23, x24, [sp, #0x30] mov fp, sp
- mov x19, x0 - ; gcrRegs +[x19]
+ mov x20, x0 + ; gcrRegs +[x20]
mov w21, w1
- mov w20, w2
+ mov w19, w2
mov w23, w3 mov x22, x4 ; gcrRegs +[x22] ;; size=40 bbWeight=1 PerfScore 7.00
-G_M44091_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - cbz x19, G_M44091_IG06
+G_M44091_IG02: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x20, G_M44091_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M44091_IG03: ; bbWeight=0.14, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - eor w20, w20, #2 - and w0, w20, w21 - cmp w0, w21 - beq G_M44091_IG16 - ;; size=16 bbWeight=0.14 PerfScore 0.36 -G_M44091_IG04: ; bbWeight=8.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19 x22] - mov w0, wzr - ;; size=4 bbWeight=8.14 PerfScore 4.07 -G_M44091_IG05: ; bbWeight=8.14, 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=8.14 PerfScore 40.71 -G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19 x22]
+G_M44091_IG03: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -86,149 +74,24 @@ G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M44091_IG03 - ;; size=40 bbWeight=0.00 PerfScore 0.01 -G_M44091_IG07: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x19] - ; byrRegs +[x21] - tbz w20, #18, G_M44091_IG08 - ldr w0, [x22, #0x08] - cmp w0, w24 - bhs G_M44091_IG15 - ldr x0, [x21, w0, UXTW #3] - ; gcrRegs +[x0] - ldr x1, [x0] - ldr x1, [x1, #0x48] - ldr x1, [x1, #0x20] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - tbnz w0, #4, G_M44091_IG13 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M44091_IG08: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cbz w24, G_M44091_IG04 - ldr w0, [x22, #0x08] - sub w1, w24, #1 - cmp w0, w1 - blt G_M44091_IG04 - sub w0, w24, #1 - ldr x20, [x21, w0, UXTW #3] - ; gcrRegs +[x20]
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M44091_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + eor w19, w19, #2 + and w0, w19, w21 + cmp w0, w21 + bne G_M44091_IG11 + ;; size=16 bbWeight=1.00 PerfScore 2.50 +G_M44091_IG05: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + tst w23, #3 + beq G_M44091_IG30 + ;; size=8 bbWeight=0.80 PerfScore 1.20 +G_M44091_IG06: ; bbWeight=0.72, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M44091_IG14 + ;; size=4 bbWeight=0.72 PerfScore 0.72 +G_M44091_IG07: ; bbWeight=0.57, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0] ldr x1, [x20]
- ldr x1, [x1, #0x48] - ldr x1, [x1, #0x38] - blr x1 - ; gcrRegs -[x22] - ; byrRegs -[x21] - ; gcr arg pop 0 - ldr x1, [x0] - ldr x1, [x1, #0x60] - ldr x1, [x1, #0x10] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - mov x0, x20 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - mov w2, wzr - ldr x3, [x20] - ldr x3, [x3, #0x50] - ldr x3, [x3, #0x20] - blr x3 - ; gcrRegs -[x0 x20] - ; gcr arg pop 0 - cbnz w0, G_M44091_IG13 - b G_M44091_IG04 - ;; size=112 bbWeight=0 PerfScore 0.00 -G_M44091_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs +[x22] - ; byrRegs +[x21] - tbz w20, #16, G_M44091_IG13 - tbnz w20, #8, G_M44091_IG13 - mov w19, wzr - b G_M44091_IG12 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M44091_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ldr w1, [x22, #0x08] - cmp w19, w1 - bhs G_M44091_IG15 - add x1, x22, #16 - ; byrRegs +[x1] - ldr x0, [x1, w19, UXTW #3] - ; gcrRegs +[x0] - cbz x0, G_M44091_IG11 - ldr x1, [x21, w19, UXTW #3] - ; gcrRegs +[x1] - ; byrRegs -[x1] - movz x2, #0xD1FFAB1E // code for System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - ;; size=52 bbWeight=0 PerfScore 0.00 -G_M44091_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - add w19, w19, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cmp w19, w24 - blt G_M44091_IG10 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M44091_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - ; byrRegs -[x21] - mov w0, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG14: ; bbWeight=0, 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 PerfScore 0.00 -G_M44091_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG16: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19 x22] - tst w23, #3 - bne G_M44091_IG18 - tbz w23, #1, G_M44091_IG17 - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x60] - ldr x1, [x1] - blr x1
...

libraries_tests.run.osx.arm64.Release.mch

-12 (-4.48%) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)

@@ -14,19 +14,19 @@ ;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T05] ( 3, 3.94) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V05 tmp2 [V05,T06] ( 4, 2 ) int -> x3
+; V05 tmp2 [V05,T06] ( 2, 2 ) int -> x0
; V06 tmp3 [V06,T04] ( 3, 3.95) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Collections.Generic.IComparer`1[int]>
-; V07 tmp4 [V07,T08] ( 3, 2 ) int -> x0 -; V08 tmp5 [V08,T07] ( 4, 2 ) int -> x3 "guarded devirt return temp"
+; V07 tmp4 [V07,T07] ( 3, 2.00) int -> x0 +; V08 tmp5 [V08,T08] ( 3, 1.98) int -> x0 "guarded devirt return temp"
; V09 tmp6 [V09,T03] ( 4, 4.18) int -> x1 "guarded devirt arg temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]>
-; V11 tmp8 [V11,T10] ( 3, 1.97) int -> x0 "guarded devirt return temp"
+; V11 tmp8 [V11,T09] ( 3, 1.97) int -> x0 "guarded devirt return temp"
; V12 tmp9 [V12,T02] ( 4, 4.20) int -> x1 "guarded devirt arg temp" ;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.GenericComparer`1[int]> ;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V15 tmp12 [V15,T09] ( 3, 1.98) int -> x3 "Inline return value spill temp"
+; V15 tmp12 [V15,T11] ( 3, 1.97) int -> x0 "Inline return value spill temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V17 tmp14 [V17,T11] ( 3, 1.97) int -> x0 "Inline return value spill temp"
+; V17 tmp14 [V17,T10] ( 3, 1.97) int -> x0 "Inline return value spill temp"
; ; Lcl frame size = 0 @@ -40,7 +40,7 @@ G_M7586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 3.50 G_M7586_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x3C]
- cbz w0, G_M7586_IG07
+ cbz w0, G_M7586_IG06
;; size=8 bbWeight=1 PerfScore 4.00 G_M7586_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x10] @@ -53,26 +53,21 @@ G_M7586_IG03: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, cmp x2, x11 bne G_M7586_IG16 cmp w1, w20
- bge G_M7586_IG05
+ bge G_M7586_IG12
;; size=40 bbWeight=0.98 PerfScore 13.29 G_M7586_IG04: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- movn w3, #0 - b G_M7586_IG06 - ;; size=8 bbWeight=0.86 PerfScore 1.29 -G_M7586_IG05: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - cmp w1, w20 - cset x3, gt - ;; size=8 bbWeight=0.12 PerfScore 0.12 -G_M7586_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - cmp w3, #0 - bgt G_M7586_IG17
+ movn w0, #0 + ;; size=4 bbWeight=0.86 PerfScore 0.43 +G_M7586_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w0, #0 + bgt G_M7586_IG14
;; size=8 bbWeight=1 PerfScore 1.50
-G_M7586_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M7586_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x3D]
- cbz w0, G_M7586_IG10
+ cbz w0, G_M7586_IG13
;; size=8 bbWeight=1 PerfScore 4.00
-G_M7586_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M7586_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr w1, [x19, #0x34] @@ -81,47 +76,48 @@ G_M7586_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x11, #0xD1FFAB1E LSL #16 movk x11, #2 LSL #32 cmp x2, x11
- bne G_M7586_IG15
+ bne G_M7586_IG17
cmp w1, w20
- bge G_M7586_IG13
+ bge G_M7586_IG11
;; size=40 bbWeight=0.99 PerfScore 13.33
-G_M7586_IG09: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7586_IG08: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movn w0, #0
- b G_M7586_IG14 - ;; size=8 bbWeight=0.86 PerfScore 1.30 -G_M7586_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, #1 - b G_M7586_IG11 - ;; size=8 bbWeight=0.01 PerfScore 0.02 -G_M7586_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.86 PerfScore 0.43 +G_M7586_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0 cset x0, ge ;; size=8 bbWeight=1 PerfScore 1.00
-G_M7586_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M7586_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7586_IG13: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7586_IG11: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
cmp w1, w20 cset x0, gt
- ;; size=8 bbWeight=0.12 PerfScore 0.12 -G_M7586_IG14: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7586_IG11 - ;; size=4 bbWeight=0.99 PerfScore 0.99 -G_M7586_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - mov w2, w20 - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #2 LSL #32 - ldr x3, [x11] - blr x3 - ; gcrRegs -[x0] - b G_M7586_IG11 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M7586_IG16: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ b G_M7586_IG09 + ;; size=12 bbWeight=0.12 PerfScore 0.25 +G_M7586_IG12: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19] + cmp w1, w20 + cset x0, gt + b G_M7586_IG05 + ;; size=12 bbWeight=0.12 PerfScore 0.25 +G_M7586_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + mov w0, #1 + b G_M7586_IG09 + ;; size=8 bbWeight=0.01 PerfScore 0.02 +G_M7586_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M7586_IG15: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M7586_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0 x19] mov w2, w20 movz x11, #0xD1FFAB1E // code for <unknown method> @@ -130,21 +126,21 @@ G_M7586_IG16: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x3, [x11] blr x3 ; gcrRegs -[x0]
- sxtw w3, w0 - cmp w3, #0 - ble G_M7586_IG07 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M7586_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M7586_IG18: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M7586_IG05 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M7586_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x0] + mov w2, w20 + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #2 LSL #32 + ldr x3, [x11] + blr x3 + ; gcrRegs -[x0] + b G_M7586_IG09 + ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 268, prolog size 12, PerfScore 47.46, instruction count 67, allocated bytes for code 268 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
+; Total bytes of code 256, prolog size 12, PerfScore 44.99, instruction count 64, allocated bytes for code 256 (MethodHash=4918e25d) for method System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -155,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-4.11%) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)

@@ -5,14 +5,14 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 88928
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 88928
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 17, 12.62) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85> ; V01 loc0 [V01,T27] ( 4, 2.01) ubyte -> x1 ; V02 loc1 [V02,T18] ( 3, 3.00) int -> x1 single-def
-; V03 loc2 [V03,T09] ( 6, 5.59) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
+; V03 loc2 [V03,T09] ( 6, 5.60) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection> ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle> ; V06 loc5 [V06 ] ( 12, 10.64) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition> @@ -24,11 +24,11 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.19) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.19) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition> ; V17 tmp10 [V17,T12] ( 3, 3.06) int -> x1 "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.05) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.19) byref -> x1 "impAppendStmt" ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,9 +48,9 @@ ; V36 tmp29 [V36,T22] ( 2, 2.01) int -> x2 "Inline stloc first use temp" ; V37 tmp30 [V37,T20] ( 3, 2.01) int -> x1 "Inline return value spill temp" ;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.03) byref -> x22 "Inlining Arg" -; V40 tmp33 [V40,T08] ( 5, 6.03) int -> x19 "Inlining Arg" -; V41 tmp34 [V41,T19] ( 3, 2.35) int -> x23 "Inline stloc first use temp"
+; V39 tmp32 [V39,T07] ( 5, 6.03) byref -> x3 "Inlining Arg" +; V40 tmp33 [V40,T08] ( 5, 6.03) int -> x2 "Inlining Arg" +; V41 tmp34 [V41,T19] ( 3, 2.35) int -> x1 "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -61,18 +61,18 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.27) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.27) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP ; V55 tmp48 [V55 ] ( 6, 4.06) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP ; V56 tmp49 [V56 ] ( 7, 6.59) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T23] ( 2, 2.01) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V57 tmp50 [V57,T23] ( 2, 2.01) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T24] ( 2, 2.01) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP ;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.07) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP -; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.07) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP +; V63 tmp56 [V63,T13] ( 2, 3.06) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.06) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP ;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP ;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP @@ -86,39 +86,162 @@ ;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP ; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP ; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.60) int -> x1 "CSE - aggressive"
+; V77 cse0 [V77,T10] ( 3, 4.60) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 40 G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ str x21, [sp, #0x48]
mov fp, sp stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
- add x1, sp, #96
+ add x1, sp, #80
str x1, [fp, #0x30] // [V76 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0] ldr w1, [x0, #0x10] ldr x19, [x0, #0x08] ; gcrRegs +[x19]
- cbz w1, G_M11515_IG05
+ cbz w1, G_M11515_IG14
;; size=12 bbWeight=1 PerfScore 7.00 G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz cmp w1, #1
- bne G_M11515_IG28
+ bne G_M11515_IG18
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref movn w1, #2 str w1, [x0, #0x10]
- b G_M11515_IG07 - ;; size=12 bbWeight=1.00 PerfScore 2.51 -G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.00 PerfScore 1.51 +G_M11515_IG05: ; bbWeight=1.53, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + add x1, x0, #36 + ; byrRegs +[x1] + ldp w3, w2, [x1] + cmp w2, w3 + bge G_M11515_IG15 + add w2, w2, #1 + str w2, [x1, #0x04] + ldr w1, [x0, #0x28] + ; byrRegs -[x1] + and w20, w1, #0xD1FFAB1E + ldr x1, [x19, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M11515_IG16 + ;; size=40 bbWeight=1.53 PerfScore 21.46 +G_M11515_IG06: ; bbWeight=1.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0-x1] + ldrb w1, [x19, #0x6C] + cbnz w1, G_M11515_IG21 + ldr x21, [x19, #0x18] + ; gcrRegs +[x21] + ldr w1, [x21, #0x50] + cbnz w1, G_M11515_IG19 + sxtw w1, w20 + ;; size=24 bbWeight=1.53 PerfScore 17.61 +G_M11515_IG07: ; bbWeight=1.53, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str x21, [fp, #0x20] // [V55 tmp48] + str w1, [fp, #0x28] // [V56 tmp49] + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + ldrb w1, [x0, #0x18] + cbz w1, G_M11515_IG10 + ;; size=20 bbWeight=1.53 PerfScore 12.25 +G_M11515_IG08: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG20 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w1, [x1, #0x08] + ; byrRegs -[x1] + add w1, w2, w1 + mov w2, w1 + add x2, x2, #4 + ldrsw x4, [x3, #0x08] + cmp x2, x4 + bhi G_M11515_IG22 + ldr x2, [x3] + sxtw x1, w1 + ldr w21, [x2, x1] + ;; size=88 bbWeight=1.52 PerfScore 47.22 +G_M11515_IG09: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x3] + tst w21, #6 + bne G_M11515_IG05 + ;; size=8 bbWeight=1.52 PerfScore 2.28 +G_M11515_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG24 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w4, [x1, #0x10] + add w2, w2, w4 + ldrb w1, [x1, #0x07] + ; byrRegs -[x1] + cbnz w1, G_M11515_IG13 + ;; size=64 bbWeight=1.00 PerfScore 23.10 +G_M11515_IG11: ; bbWeight=0.78, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + mov w1, w2 + add x1, x1, #4 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x1, [x3] + sxtw x2, w2 + ldr w1, [x1, x2] + tst w1, #0xD1FFAB1E + bne G_M11515_IG23 + ;; size=40 bbWeight=0.78 PerfScore 10.56 +G_M11515_IG12: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + stp w20, w1, [x0, #0x1C] + mov w1, #1 + str w1, [x0, #0x10] + b G_M11515_IG25 + ;; size=16 bbWeight=1.00 PerfScore 3.52 +G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs +[x3] + mov w1, w2 + add x1, x1, #2 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x3, [x3] + ; byrRegs -[x3] + sxtw x2, w2 + ldrh w1, [x3, x2] + b G_M11515_IG12 + ;; size=36 bbWeight=0.22 PerfScore 2.88 +G_M11515_IG14: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19]
movn w1, #0 str w1, [x0, #0x10] mov x0, x19 @@ -143,117 +266,16 @@ G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs +[x0] b G_M11515_IG04 ;; size=72 bbWeight=0.00 PerfScore 0.04
-G_M11515_IG06: ; bbWeight=1.52, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] - tst w22, #6 - beq G_M11515_IG14 - ;; size=8 bbWeight=1.52 PerfScore 2.28
...

-16 (-3.77%) : 350433.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -16,41 +16,40 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; V06 tmp2 [V06,T07] ( 4, 3.32) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> -; V10 tmp6 [V10,T02] ( 4, 5.85) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> +; V10 tmp6 [V10,T02] ( 4, 5.85) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.83) long -> x0 multi-def "CSE - aggressive" ; V12 cse1 [V12,T09] ( 5, 2.99) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T12] ( 3, 1.40) long -> x23 "CSE - moderate"
+; V13 cse2 [V13,T12] ( 3, 1.40) long -> x2 "CSE - moderate"
; V14 rat0 [V14,T11] ( 3, 1.40) long -> x0 "Spilling to split statement for tree" ; V15 rat1 [V15,T13] ( 3, 1.27) long -> x1 "runtime lookup" ; V16 rat2 [V16,T10] ( 3, 1.78) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T03] ( 3, 5.59) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T03] ( 3, 5.59) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG19
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG20
;; size=12 bbWeight=1 PerfScore 2.50 G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x15, x20 ; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG10
;; size=8 bbWeight=1 PerfScore 1.50 G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -67,44 +66,55 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG18
;; size=44 bbWeight=1 PerfScore 16.50 G_M21827_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18] - ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18] + ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #2 LSL #32
- ldr x1, [x21, #0xD1FFAB1E] - ; gcrRegs +[x1] - cmp x20, x1 - bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E] + ; gcrRegs +[x2] + cmp x1, x2 + bne G_M21827_IG17
;; size=28 bbWeight=1.00 PerfScore 8.98 G_M21827_IG06: ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21] ; gcrRegs +[x22]
- b G_M21827_IG12 - ;; size=8 bbWeight=0.53 PerfScore 2.13 -G_M21827_IG07: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.53 PerfScore 1.60 +G_M21827_IG07: ; bbWeight=0.53, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M21827_IG18 + ;; size=4 bbWeight=0.53 PerfScore 0.53 +G_M21827_IG08: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x60] + cbz x1, G_M21827_IG14 + ;; size=16 bbWeight=1.00 PerfScore 9.98 +G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + b G_M21827_IG15 + ;; size=4 bbWeight=0.80 PerfScore 0.80 +G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x68]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG12
;; size=20 bbWeight=0.32 PerfScore 4.13
-G_M21827_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M21827_IG10
+G_M21827_IG11: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M21827_IG13
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M21827_IG09: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.06 PerfScore 0.19
-G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -116,50 +126,16 @@ G_M21827_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x15] b G_M21827_IG04 ;; size=32 bbWeight=0.32 PerfScore 2.38
-G_M21827_IG11: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x20] - ldr x1, [x23, #0x08] - ; gcrRegs +[x1] - ldr x2, [x21, #0x10] - ; gcrRegs +[x2] - cmp x20, x1 - csel x22, xzr, x2, ne - ; gcrRegs +[x22] - ;; size=16 bbWeight=0.47 PerfScore 3.26 -G_M21827_IG12: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1-x2 x20] - cbz x22, G_M21827_IG19 - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x23, [x1, #0x60] - cbz x23, G_M21827_IG16 - ;; size=20 bbWeight=1.00 PerfScore 10.98 -G_M21827_IG13: ; bbWeight=0.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - b G_M21827_IG15 - ;; size=4 bbWeight=0.04 PerfScore 0.04 -G_M21827_IG14: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] +[x20] - movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #2 LSL #32 - ldr x1, [x23] - ; gcrRegs +[x1] - cmp x20, x1 - beq G_M21827_IG22 - b G_M21827_IG11 - ;; size=28 bbWeight=0.47 PerfScore 3.26 -G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1 x20] +[x22] - mov x0, x23 - b G_M21827_IG17 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0 + ;; size=20 bbWeight=0.20 PerfScore 0.60 +G_M21827_IG15: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + mov x0, x1
mov x1, x22 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY @@ -171,22 +147,38 @@ G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=1.00 PerfScore 3.49 -G_M21827_IG18: ; bbWeight=1.00, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=1.00 PerfScore 3.99 +G_M21827_IG16: ; bbWeight=1.00, epilog, nogc, extend + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.99 -G_M21827_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=1.00 PerfScore 3.99 +G_M21827_IG17: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #2 LSL #32 + ldr x3, [x2] + ; gcrRegs +[x3] + cmp x1, x3 + beq G_M21827_IG21 + ldr x2, [x2, #0x08] + ; gcrRegs +[x2] + ldr x3, [x21, #0x10] + cmp x1, x2 + csel x22, xzr, x3, ne + ; gcrRegs +[x22] + cbnz x22, G_M21827_IG08 + ;; size=44 bbWeight=0.47 PerfScore 6.52 +G_M21827_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1-x3 x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.01 -G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.00 PerfScore 0.01 +G_M21827_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -195,7 +187,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 blr x1 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x19 ; gcrRegs +[x0] @@ -207,14 +199,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] b G_M21827_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...

+8 (+1.11%) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)

@@ -57,12 +57,12 @@ G_M10478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=24 bbWeight=1 PerfScore 4.50 G_M10478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cmp x20, x19
- beq G_M10478_IG41 - cbz x20, G_M10478_IG23
+ beq G_M10478_IG39 + cbz x20, G_M10478_IG41
ldr x0, [x19] ldr x1, [x20] cmp x0, x1
- bne G_M10478_IG25
+ bne G_M10478_IG43
add x21, x19, #8 ; byrRegs +[x21] add x22, x20, #8 @@ -72,7 +72,7 @@ G_M10478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x20] sub w0, w0, #2 cmp w0, #23
- bhi G_M10478_IG40
+ bhi G_M10478_IG38
mov w0, w0 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -85,126 +85,227 @@ G_M10478_IG03: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 ldrsb w0, [x21] ldrsb w1, [x22] sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94 G_M10478_IG04: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref ldrb w0, [x21] ldrb w1, [x22] sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94 G_M10478_IG05: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref ldrsh w0, [x21] ldrsh w1, [x22] sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94 G_M10478_IG06: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref ldrh w0, [x21] ldrh w1, [x22] sub w0, w0, w1
- b G_M10478_IG22
+ b G_M10478_IG11
;; size=16 bbWeight=0.12 PerfScore 0.94 G_M10478_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz ldr w0, [x22] ldr w1, [x21] cmp w1, w0
- bge G_M10478_IG09
+ bge G_M10478_IG10
;; size=16 bbWeight=0.12 PerfScore 0.94 G_M10478_IG08: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x21-x22] movn w0, #0
- b G_M10478_IG10 - ;; size=8 bbWeight=0.10 PerfScore 0.15 -G_M10478_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.10 PerfScore 0.05 +G_M10478_IG09: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M10478_IG11 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M10478_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21] ldr w1, [x21] cmp w1, w0 cset x0, gt
- ;; size=12 bbWeight=0.02 PerfScore 0.10 -G_M10478_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21] - b G_M10478_IG22 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M10478_IG11: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz - ; byrRegs +[x21-x22] - ldr w0, [x22] - ldr w1, [x21] - cmp w1, w0 - bhs G_M10478_IG13 - ;; size=16 bbWeight=0.12 PerfScore 0.94 -G_M10478_IG12: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21-x22] - movn w0, #0 - b G_M10478_IG14 - ;; size=8 bbWeight=0.10 PerfScore 0.15 -G_M10478_IG13: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - ; byrRegs +[x21] - ldr w1, [x21] - cmp w1, w0 - cset x0, hi - ;; size=12 bbWeight=0.03 PerfScore 0.11 -G_M10478_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21] - b G_M10478_IG22 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M10478_IG15: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz - ; byrRegs +[x21-x22] - ldr x0, [x22] - ldr x1, [x21] - cmp x1, x0 - bge G_M10478_IG17 - ;; size=16 bbWeight=0.12 PerfScore 0.94 -G_M10478_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21-x22] - movn w0, #0 - b G_M10478_IG18 - ;; size=8 bbWeight=0.08 PerfScore 0.12 -G_M10478_IG17: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - ; byrRegs +[x21] - ldr x1, [x21] - cmp x1, x0 - cset x0, gt - ;; size=12 bbWeight=0.05 PerfScore 0.19 -G_M10478_IG18: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21] - b G_M10478_IG22 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M10478_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz - ; byrRegs +[x21-x22] - ldr x0, [x22] - ldr x1, [x21] - cmp x1, x0 - bhs G_M10478_IG21 - ;; size=16 bbWeight=0.12 PerfScore 0.94 -G_M10478_IG20: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x21-x22] - movn w0, #0 - b G_M10478_IG22 - ;; size=8 bbWeight=0.12 PerfScore 0.18 -G_M10478_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - ; byrRegs +[x21] - ldr x1, [x21] - cmp x1, x0 - cset x0, hi - ;; size=12 bbWeight=0.01 PerfScore 0.02 -G_M10478_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ b G_M10478_IG09 + ;; size=16 bbWeight=0.02 PerfScore 0.12 +G_M10478_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21] 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_M10478_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10478_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz + ; byrRegs +[x21-x22] + ldr w0, [x22] + ldr w1, [x21] + cmp w1, w0 + bhs G_M10478_IG22 + ;; size=16 bbWeight=0.12 PerfScore 0.94 +G_M10478_IG13: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21-x22] + movn w0, #0 + ;; size=4 bbWeight=0.10 PerfScore 0.05 +G_M10478_IG14: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M10478_IG11 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M10478_IG15: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz + ; byrRegs +[x21-x22] + ldr x0, [x22] + ldr x1, [x21] + cmp x1, x0 + bge G_M10478_IG21 + ;; size=16 bbWeight=0.12 PerfScore 0.94 +G_M10478_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21-x22] + movn w0, #0 + ;; size=4 bbWeight=0.08 PerfScore 0.04 +G_M10478_IG17: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M10478_IG11 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M10478_IG18: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz + ; byrRegs +[x21-x22] + ldr x0, [x22] + ldr x1, [x21] + cmp x1, x0 + bhs G_M10478_IG23 + ;; size=16 bbWeight=0.12 PerfScore 0.94 +G_M10478_IG19: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21-x22] + movn w0, #0 + ;; size=4 bbWeight=0.12 PerfScore 0.06 +G_M10478_IG20: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M10478_IG11 + ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M10478_IG21: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; byrRegs +[x21] + ldr x1, [x21] + cmp x1, x0 + cset x0, gt + b G_M10478_IG17 + ;; size=16 bbWeight=0.05 PerfScore 0.24 +G_M10478_IG22: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ldr w1, [x21] + cmp w1, w0 + cset x0, hi + b G_M10478_IG14 + ;; size=16 bbWeight=0.03 PerfScore 0.14 +G_M10478_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ldr x1, [x21] + cmp x1, x0 + cset x0, hi + b G_M10478_IG20 + ;; size=16 bbWeight=0.01 PerfScore 0.03 +G_M10478_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=600000 {x21 x22}, byref, isz + ; byrRegs +[x22] + ldr s16, [x22] + ldr s17, [x21] + fcmp s17, s16 + bhs G_M10478_IG26 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M10478_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21-x22] + movn w0, #0 + b G_M10478_IG30 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M10478_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz + ; byrRegs +[x21] + ldr s17, [x21] + fcmp s17, s16 + bgt G_M10478_IG29 + ldr s17, [x21] + fcmp s17, s16 + bne G_M10478_IG28 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M10478_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21] + mov w0, wzr + b G_M10478_IG30 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M10478_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz + ; byrRegs +[x21] + ldr s17, [x21] + fcmp s17, s17 + beq G_M10478_IG29 + fcmp s16, s16 + bne G_M10478_IG27 + b G_M10478_IG25 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M10478_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

+16 (+1.22%) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span1[ubyte],System.ArraySegment1[ubyte]):int:this (Tier1)

@@ -5,11 +5,11 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 49576
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 49576
; 10 inlinees with PGO data; 16 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 35, 12.29) ref -> x19 this class-hnd single-def <System.IO.Strategies.BufferedFileStreamStrategy>
+; V00 this [V00,T00] ( 36, 12.29) ref -> x19 this class-hnd single-def <System.IO.Strategies.BufferedFileStreamStrategy>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]> ; V02 arg2 [V02,T09] ( 10, 2 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[ubyte]> ; V03 loc0 [V03,T21] ( 3, 1.00) ubyte -> x22 @@ -62,11 +62,11 @@ ; V50 tmp43 [V50,T36] ( 3, 0 ) int -> x20 "Inlining Arg" ; V51 tmp44 [V51,T37] ( 2, 0 ) byref -> x21 single-def "Inlining Arg" ; V52 tmp45 [V52,T08] ( 5, 2.00) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V53 tmp46 [V53,T04] ( 9, 5.02) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V53 tmp46 [V53,T04] ( 10, 5.02) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V54 tmp47 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP ;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ; V56 tmp49 [V56,T16] ( 4, 2.01) byref -> x1 "field V09._reference (fldOffset=0x0)" P-INDEP
-; V57 tmp50 [V57,T11] ( 4, 3.01) int -> x3 "field V09._length (fldOffset=0x8)" P-INDEP
+; V57 tmp50 [V57,T11] ( 5, 3.01) int -> x3 "field V09._length (fldOffset=0x8)" P-INDEP
;* V58 tmp51 [V58 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V60 tmp53 [V60,T27] ( 3, 0.00) byref -> x1 "field V33._reference (fldOffset=0x0)" P-INDEP @@ -78,7 +78,7 @@ ; V66 tmp59 [V66,T31] ( 3, 0 ) ref -> x0 single-def "argument with side effect" ; V67 tmp60 [V67,T32] ( 3, 0 ) ref -> x0 single-def "argument with side effect" ; V68 tmp61 [V68,T33] ( 3, 0 ) ref -> x0 single-def "argument with side effect"
-; V69 cse0 [V69,T15] ( 3, 3.00) int -> x0 "CSE - moderate"
+; V69 cse0 [V69,T15] ( 3, 3.00) int -> x22 "CSE - moderate"
; V70 cse1 [V70,T12] ( 3, 3.01) byref -> x0 "CSE - aggressive" ; V71 cse2 [V71,T14] ( 3, 3.01) long -> x1 "CSE - aggressive" ; @@ -100,19 +100,21 @@ G_M13056_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w20, w2 ;; size=44 bbWeight=1 PerfScore 9.00 G_M13056_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w0, [x19, #0x30] - cbz w0, G_M13056_IG11
+ ldr w22, [x19, #0x30] + cbz w22, G_M13056_IG12
;; size=8 bbWeight=1 PerfScore 4.00 G_M13056_IG03: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldr w1, [x19, #0x2C] - cbnz w1, G_M13056_IG04 - ldr w1, [x19, #0x34] - cmp w0, w1
+ ldr w0, [x19, #0x2C] + cbnz w0, G_M13056_IG05 + ;; size=8 bbWeight=1.00 PerfScore 4.02 +G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz + ldr w0, [x19, #0x34] + cmp w22, w0
cset x0, le tst w0, #255
- bne G_M13056_IG05 - ;; size=28 bbWeight=1.00 PerfScore 9.54 -G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+ bne G_M13056_IG06 + ;; size=20 bbWeight=1.00 PerfScore 5.52 +G_M13056_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -125,45 +127,45 @@ G_M13056_IG04: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { ldr x2, [x2] blr x2 ;; size=44 bbWeight=1.00 PerfScore 8.54
-G_M13056_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
mov w22, wzr ldp w1, w0, [x19, #0x30] sub w23, w0, w1
- cbz w23, G_M13056_IG09
+ cbz w23, G_M13056_IG10
;; size=16 bbWeight=1.00 PerfScore 5.02
-G_M13056_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w20 csel w23, w23, w20, le ldr x0, [x19, #0x20] ; gcrRegs +[x0] ldr w24, [x19, #0x30]
- cbz x0, G_M13056_IG38
+ cbz x0, G_M13056_IG31
mov w1, w24 add x2, x1, w23, UXTW ldr w3, [x0, #0x08] cmp x2, x3
- bhi G_M13056_IG34
+ bhi G_M13056_IG39
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] add x1, x0, x1 ; byrRegs +[x1] sxtw w3, w23
- ;; size=52 bbWeight=1.00 PerfScore 15.57 -G_M13056_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref, isz - ; byrRegs -[x0]
cmp w3, w20
- bhi G_M13056_IG27
+ bhi G_M13056_IG32 + ;; size=60 bbWeight=1.00 PerfScore 17.08 +G_M13056_IG08: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref, isz + ; byrRegs -[x0]
mov w2, w3 cmp x2, #1
- bne G_M13056_IG26 - ;; size=20 bbWeight=1.00 PerfScore 3.52 -G_M13056_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref
+ bne G_M13056_IG21 + ;; size=12 bbWeight=1.00 PerfScore 2.01 +G_M13056_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, byref
ldrb w0, [x1] strb w0, [x21]
- b G_M13056_IG13
+ b G_M13056_IG14
;; size=12 bbWeight=0.50 PerfScore 2.51
-G_M13056_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x1] mov x0, x19 ; gcrRegs +[x0] @@ -175,9 +177,9 @@ G_M13056_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { ; gcrRegs -[x0] ldr w0, [x19, #0x2C] cmp w0, #0
- bgt G_M13056_IG39
+ bgt G_M13056_IG43
;; size=36 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG11: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0] ldr x1, [x0] @@ -185,7 +187,7 @@ G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M13056_IG40
+ bne G_M13056_IG45
ldr x0, [x0, #0x18] movz x1, #0xD1FFAB1E // code for Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this movk x1, #0xD1FFAB1E LSL #16 @@ -194,18 +196,18 @@ G_M13056_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { ldr wzr, [x0] blr x1 ; gcrRegs -[x0]
- b G_M13056_IG20
+ b G_M13056_IG22
;; size=60 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG11: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ldr w1, [x19, #0x34] - cbnz w1, G_M13056_IG03
+G_M13056_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz + ldr w0, [x19, #0x34] + cbnz w0, G_M13056_IG03
;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M13056_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - ldr w1, [x19, #0x2C] - tbnz w1, #31, G_M13056_IG03 - b G_M13056_IG05
+G_M13056_IG13: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz + ldr w0, [x19, #0x2C] + tbnz w0, #31, G_M13056_IG44 + b G_M13056_IG06
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
ldr w0, [x19, #0x30] add w0, w0, w23 str w0, [x19, #0x30] @@ -216,14 +218,14 @@ G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M13056_IG31
+ bne G_M13056_IG36
ldr x25, [x0, #0x18] ; gcrRegs +[x25] add x0, x25, #24 ; gcrRegs -[x0] ; byrRegs +[x0] ldapr w1, [x0]
- tbnz w1, #0, G_M13056_IG30
+ tbnz w1, #0, G_M13056_IG35
ldapr w0, [x0] ; byrRegs -[x0] mvn w0, w0 @@ -234,12 +236,12 @@ G_M13056_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 { ldr x1, [x1] blr x1 ldr x0, [x25, #0x10]
- tbnz x0, #63, G_M13056_IG28
+ tbnz x0, #63, G_M13056_IG33
mov x1, #0xD1FFAB1E cmp x0, x1 cset x26, gt ;; size=108 bbWeight=1.00 PerfScore 36.16
-G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=200000 {x21}, byref, isz
+G_M13056_IG15: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=200000 {x21}, byref, isz
cmp w26, #0 cset x0, eq movz x1, #0xD1FFAB1E // code for <unknown method> @@ -248,26 +250,26 @@ G_M13056_IG14: ; bbWeight=1.00, gcrefRegs=2080000 {x19 x25}, byrefRegs=20 ldr x1, [x1] blr x1 ldapur w27, [x25, #0x30]
- cbz w27, G_M13056_IG29
+ cbz w27, G_M13056_IG34
;; size=36 bbWeight=1.00 PerfScore 10.55
-G_M13056_IG15: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
+G_M13056_IG16: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x25] cmp w27, #1 cset x28, eq ;; size=8 bbWeight=1.00 PerfScore 1.00
-G_M13056_IG16: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - cbz w28, G_M13056_IG18 - ;; size=4 bbWeight=1.00 PerfScore 1.00
G_M13056_IG17: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ cbz w28, G_M13056_IG19 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M13056_IG18: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w20
- blt G_M13056_IG32
+ blt G_M13056_IG37
;; size=8 bbWeight=1.00 PerfScore 1.51
-G_M13056_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13056_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x21] mov w0, w23 ;; size=4 bbWeight=1 PerfScore 0.50
-G_M13056_IG19: ; bbWeight=1, epilog, nogc, extend
+G_M13056_IG20: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60] ldp x25, x26, [sp, #0x50] ldp x23, x24, [sp, #0x40] @@ -276,20 +278,31 @@ G_M13056_IG19: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M13056_IG20: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M13056_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200002 {x1 x21}, gcvars, byref
...

+8 (+1.69%) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap2+ArrayBasedLinkedQueue1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair2[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)

@@ -5,11 +5,11 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1765
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1765
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
+; V00 this [V00,T00] ( 14, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]> ; V02 loc0 [V02,T08] ( 6, 4 ) int -> x20 ; V03 loc1 [V03 ] ( 5, 1.98) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]> @@ -80,7 +80,7 @@ G_M42120_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs +[x1] ldr w14, [x19, #0x18] cmn w14, #1
- beq G_M42120_IG10
+ beq G_M42120_IG11
;; size=12 bbWeight=1 PerfScore 4.50 G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz sxtw w20, w14 @@ -90,13 +90,13 @@ G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ; gcrRegs +[x15] ldr w12, [x15, #0x10] cmp w14, w12
- bhs G_M42120_IG13
+ bhs G_M42120_IG14
;; size=24 bbWeight=0.99 PerfScore 8.41 G_M42120_IG04: ; bbWeight=0.99, gcrefRegs=88003 {x0 x1 x15 x19}, byrefRegs=0000 {}, byref, isz ldr x15, [x15, #0x08] ldr w12, [x15, #0x08] cmp w14, w12
- bhs G_M42120_IG12
+ bhs G_M42120_IG13
mov w12, #24 mov xip0, #16 umaddl x14, w14, w12, xip0 @@ -128,25 +128,27 @@ G_M42120_IG06: ; bbWeight=0.99, extend add w2, w1, #1 str w2, [x0, #0x14] ;; size=48 bbWeight=0.99 PerfScore 14.85
-G_M42120_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M42120_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x3] ldr w0, [x19, #0x10] cmn w0, #1
- bne G_M42120_IG11 - str w20, [x19, #0x10] - ;; size=16 bbWeight=1 PerfScore 5.50
+ bne G_M42120_IG12 + ;; size=12 bbWeight=0.99 PerfScore 4.45
G_M42120_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ str w20, [x19, #0x10] + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42120_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str w20, [x19, #0x14] mov w0, w20 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M42120_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M42120_IG10: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60] ldp fp, lr, [sp], #0x80 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M42120_IG11: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -162,7 +164,7 @@ G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x22] ldr w1, [x22, #0x08] cmp w1, w21
- bhi G_M42120_IG14
+ bhi G_M42120_IG15
add x1, fp, #24 // [V24 tmp20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -170,9 +172,11 @@ G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ldr x2, [x2] blr x2 ; gcrRegs -[x0 x22]
- b G_M42120_IG07 - ;; size=76 bbWeight=0.01 PerfScore 0.28 -G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x10] + cmn w0, #1 + beq G_M42120_IG08 + ;; size=84 bbWeight=0.01 PerfScore 0.32 +G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x21, [x19, #0x08] ; gcrRegs +[x21] ldr w22, [x19, #0x14] @@ -205,12 +209,12 @@ G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x3 ; gcrRegs -[x0 x21]
- b G_M42120_IG08
+ b G_M42120_IG09
;; size=104 bbWeight=0 PerfScore 0.00
-G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -218,7 +222,7 @@ G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
+G_M42120_IG15: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22] add w14, w21, #1 str w14, [x0, #0x10] @@ -238,7 +242,7 @@ G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=000 b G_M42120_IG07 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 36, PerfScore 69.81, instruction count 118, allocated bytes for code 472 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
+; Total bytes of code 480, prolog size 36, PerfScore 69.80, instruction count 120, allocated bytes for code 480 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
; ============================================================ Unwind Info: @@ -249,7 +253,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- 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

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 21 0 1 20 -0 +4
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 90 46 11 33 -800 +128
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.osx.arm64.Release.mch 321 73 28 220 -572 +152
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
432 119 40 273 -1,372 +284

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,860 4 24,856 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 83,817 48,088 35,729 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,124 37,350 10,774 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 585,862 356,765 229,097 2 (0.00%) 26 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 234,105 15 234,090 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,348 18 316,330 0 (0.00%) 0 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 643,885 468,829 175,056 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 302,301 21,597 280,704 0 (0.00%) 0 (0.00%)
realworld.run.osx.arm64.checked.mch 31,542 3 31,539 0 (0.00%) 0 (0.00%)
2,270,844 932,669 1,338,175 2 (0.00%) 26 (0.00%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34442140 (overridden on cmd)
Total bytes of diff: 34442144 (overridden on cmd)
Total bytes of delta: 4 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           4 : 58008.dasm (2.63 % of base)

1 total files with Code Size differences (0 improved, 1 regressed), 20 unchanged.

Top method regressions (bytes):
           4 (2.63 % of base) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

Top method regressions (percentages):
           4 (2.63 % of base) : 58008.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)

1 total methods with Code Size differences (0 improved, 1 regressed).


coreclr_tests.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 486418056 (overridden on cmd)
Total bytes of diff: 486417384 (overridden on cmd)
Total bytes of delta: -672 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 296094.dasm (5.59 % of base)
          20 : 296000.dasm (2.84 % of base)
          16 : 296042.dasm (5.56 % of base)
          16 : 296126.dasm (3.39 % of base)
          12 : 295997.dasm (4.35 % of base)
           8 : 296022.dasm (2.47 % of base)
           8 : 296039.dasm (2.47 % of base)
           4 : 296130.dasm (1.35 % of base)
           4 : 296089.dasm (2.86 % of base)
           4 : 214393.dasm (0.48 % of base)
           4 : 296034.dasm (1.30 % of base)

Top file improvements (bytes):
        -176 : 296041.dasm (-7.89 % of base)
        -160 : 296118.dasm (-40.82 % of base)
         -80 : 296032.dasm (-14.93 % of base)
         -40 : 296028.dasm (-2.79 % of base)
         -32 : 296083.dasm (-5.26 % of base)
         -24 : 296127.dasm (-2.75 % of base)
         -20 : 295994.dasm (-5.95 % of base)
         -20 : 296132.dasm (-10.87 % of base)
         -20 : 296135.dasm (-5.10 % of base)
         -16 : 296131.dasm (-6.67 % of base)
         -16 : 296066.dasm (-4.04 % of base)
         -12 : 296013.dasm (-4.55 % of base)
         -12 : 296113.dasm (-3.26 % of base)
         -12 : 296129.dasm (-4.35 % of base)
          -8 : 296035.dasm (-2.63 % of base)
          -8 : 296057.dasm (-0.58 % of base)
          -8 : 296093.dasm (-1.85 % of base)
          -8 : 296003.dasm (-2.17 % of base)
          -8 : 296053.dasm (-1.80 % of base)
          -8 : 296006.dasm (-2.67 % of base)

39 total files with Code Size differences (28 improved, 11 regressed), 23 unchanged.

Top method regressions (bytes):
          32 (5.59 % of base) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          20 (2.84 % of base) : 296000.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          16 (3.39 % of base) : 296126.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
          16 (5.56 % of base) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
           8 (2.47 % of base) : 296022.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           8 (2.47 % of base) : 296039.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           4 (0.48 % of base) : 214393.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (1.35 % of base) : 296130.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (2.86 % of base) : 296089.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
           4 (1.30 % of base) : 296034.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)

Top method improvements (bytes):
        -176 (-7.89 % of base) : 296041.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
        -160 (-40.82 % of base) : 296118.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 296032.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -40 (-2.79 % of base) : 296028.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
         -32 (-5.26 % of base) : 296083.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -24 (-2.75 % of base) : 296127.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -20 (-5.95 % of base) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-5.10 % of base) : 296135.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -20 (-10.87 % of base) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -16 (-6.67 % of base) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -16 (-4.04 % of base) : 296066.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
         -12 (-4.35 % of base) : 296129.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -12 (-3.26 % of base) : 296113.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -12 (-4.55 % of base) : 296013.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -8 (-1.85 % of base) : 296093.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
          -8 (-2.17 % of base) : 296003.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
          -8 (-1.80 % of base) : 296053.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
          -8 (-2.67 % of base) : 296006.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
          -8 (-0.58 % of base) : 296057.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
          -8 (-2.63 % of base) : 296035.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)

Top method regressions (percentages):
          32 (5.59 % of base) : 296094.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          16 (5.56 % of base) : 296042.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 295997.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
          16 (3.39 % of base) : 296126.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
           4 (2.86 % of base) : 296089.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
          20 (2.84 % of base) : 296000.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
           8 (2.47 % of base) : 296022.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           8 (2.47 % of base) : 296039.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           4 (1.35 % of base) : 296130.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (1.30 % of base) : 296034.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
           4 (0.48 % of base) : 214393.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)

Top method improvements (percentages):
        -160 (-40.82 % of base) : 296118.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 296032.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -20 (-10.87 % of base) : 296132.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
        -176 (-7.89 % of base) : 296041.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -16 (-6.67 % of base) : 296131.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -20 (-5.95 % of base) : 295994.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -32 (-5.26 % of base) : 296083.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -20 (-5.10 % of base) : 296135.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
          -4 (-5.00 % of base) : 296048.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
         -12 (-4.55 % of base) : 296013.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
         -12 (-4.35 % of base) : 296129.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -16 (-4.04 % of base) : 296066.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
          -4 (-3.85 % of base) : 296012.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
          -4 (-3.45 % of base) : 296019.dasm - System.Diagnostics.Tracing.EventSource:.cctor() (FullOpts)
         -12 (-3.26 % of base) : 296113.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
          -4 (-2.94 % of base) : 296024.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)
         -40 (-2.79 % of base) : 296028.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
         -24 (-2.75 % of base) : 296127.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          -8 (-2.67 % of base) : 296006.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
          -8 (-2.63 % of base) : 296035.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)


libraries_tests.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 324596964 (overridden on cmd)
Total bytes of diff: 324596544 (overridden on cmd)
Total bytes of delta: -420 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 148882.dasm (0.64 % of base)
          16 : 275767.dasm (1.22 % of base)
           8 : 543151.dasm (0.43 % of base)
           8 : 544132.dasm (0.49 % of base)
           8 : 627366.dasm (1.69 % of base)
           8 : 171130.dasm (1.11 % of base)
           4 : 179270.dasm (0.40 % of base)
           4 : 202937.dasm (0.50 % of base)
           4 : 246371.dasm (0.42 % of base)
           4 : 281375.dasm (0.43 % of base)
           4 : 293259.dasm (0.74 % of base)
           4 : 320043.dasm (0.43 % of base)
           4 : 331113.dasm (0.52 % of base)
           4 : 349435.dasm (0.30 % of base)
           4 : 390918.dasm (0.52 % of base)
           4 : 48506.dasm (0.41 % of base)
           4 : 492391.dasm (0.52 % of base)
           4 : 544226.dasm (0.18 % of base)
           4 : 82280.dasm (0.43 % of base)
           4 : 82860.dasm (0.31 % of base)

Top file improvements (bytes):
         -36 : 156202.dasm (-4.11 % of base)
         -20 : 474648.dasm (-1.30 % of base)
         -16 : 192282.dasm (-3.77 % of base)
         -16 : 202778.dasm (-2.34 % of base)
         -16 : 267668.dasm (-3.77 % of base)
         -16 : 290352.dasm (-3.77 % of base)
         -16 : 341686.dasm (-2.82 % of base)
         -16 : 350433.dasm (-3.77 % of base)
         -16 : 371310.dasm (-3.77 % of base)
         -16 : 375414.dasm (-3.77 % of base)
         -16 : 426409.dasm (-3.77 % of base)
         -16 : 432654.dasm (-3.77 % of base)
         -12 : 177905.dasm (-2.94 % of base)
         -12 : 202664.dasm (-4.48 % of base)
         -12 : 220822.dasm (-1.26 % of base)
         -12 : 277466.dasm (-0.89 % of base)
         -12 : 542614.dasm (-0.89 % of base)
         -12 : 542616.dasm (-0.89 % of base)
         -12 : 542617.dasm (-0.89 % of base)
          -8 : 157793.dasm (-0.83 % of base)

52 total files with Code Size differences (27 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          16 (1.22 % of base) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
          16 (0.64 % of base) : 148882.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
           8 (1.11 % of base) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
           8 (0.43 % of base) : 543151.dasm - System.Text.Json.JsonSerializer:WriteString[int](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):System.String (Tier1)
           8 (0.49 % of base) : 544132.dasm - System.Text.Json.JsonSerializer:WriteString[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]]):System.String (Tier1)
           8 (1.69 % of base) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
           4 (0.79 % of base) : 125749.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProvider:GetFullPath(System.String):System.String:this (Tier1)
           4 (0.06 % of base) : 126303.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProviderTests+<UsePollingFileWatcher_UseActivePolling_HasChanged_SymbolicLink_TargetChanged>d__86:MoveNext():this (Tier1)
           4 (0.40 % of base) : 179270.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.86 % of base) : 605251.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
           4 (0.31 % of base) : 82860.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
           4 (0.30 % of base) : 349435.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
           4 (0.52 % of base) : 331113.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 390918.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 492391.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 169375.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.41 % of base) : 48506.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.43 % of base) : 82280.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.42 % of base) : 246371.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.43 % of base) : 281375.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method improvements (bytes):
         -36 (-4.11 % of base) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -20 (-1.30 % of base) : 474648.dasm - System.Formats.Asn1.AsnWriter:WriteBitString(System.ReadOnlySpan`1[ubyte],int,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
         -16 (-3.77 % of base) : 192282.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 267668.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 290352.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.82 % of base) : 341686.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 350433.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 371310.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 375414.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 426409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 432654.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.34 % of base) : 202778.dasm - System.Collections.Tests.ICollection_Generic_Tests`1+<>c[int]:<GetModifyEnumerables>b__20_1(System.Collections.Generic.IEnumerable`1[int]):ubyte:this (Tier1)
         -12 (-2.94 % of base) : 177905.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -12 (-1.26 % of base) : 220822.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
         -12 (-4.48 % of base) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
         -12 (-0.89 % of base) : 542614.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableInt64(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[long]]:this (Tier1)
         -12 (-0.89 % of base) : 542616.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableUInt32(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[uint]]:this (Tier1)
         -12 (-0.89 % of base) : 542617.dasm - System.Text.Json.SourceGeneration.Tests.NumberHandlingTests_Default+NumberHandlingTestsContext_Default:Create_NullableUInt64(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[ulong]]:this (Tier1)
         -12 (-0.89 % of base) : 277466.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
          -8 (-0.83 % of base) : 157793.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)

Top method regressions (percentages):
           8 (1.69 % of base) : 627366.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
          16 (1.22 % of base) : 275767.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadSpan(System.Span`1[ubyte],System.ArraySegment`1[ubyte]):int:this (Tier1)
           8 (1.11 % of base) : 171130.dasm - System.Enum:CompareTo(System.Object):int:this (Tier1)
           4 (0.86 % of base) : 605251.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.UsedNamespaceOrType]:this (Tier1)
           4 (0.79 % of base) : 125749.dasm - Microsoft.Extensions.FileProviders.PhysicalFileProvider:GetFullPath(System.String):System.String:this (Tier1)
           4 (0.74 % of base) : 293259.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
          16 (0.64 % of base) : 148882.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
           4 (0.52 % of base) : 331113.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 390918.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 492391.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.52 % of base) : 169375.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (Tier1)
           4 (0.50 % of base) : 202937.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryTypeConverter:TypeFromInfo(int,System.Object,System.Runtime.Serialization.Formatters.Binary.ObjectReader,System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo,byref,byref,byref,byref) (Tier1)
           8 (0.49 % of base) : 544132.dasm - System.Text.Json.JsonSerializer:WriteString[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.ValueTuple`2[System.__Canon,ubyte]]]):System.String (Tier1)
           8 (0.43 % of base) : 543151.dasm - System.Text.Json.JsonSerializer:WriteString[int](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):System.String (Tier1)
           4 (0.43 % of base) : 281375.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.43 % of base) : 320043.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.43 % of base) : 82280.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.42 % of base) : 246371.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
           4 (0.41 % of base) : 48506.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.40 % of base) : 179270.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)

Top method improvements (percentages):
         -12 (-4.48 % of base) : 202664.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:IsWithinRange(int):ubyte:this (Tier1)
         -36 (-4.11 % of base) : 156202.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -16 (-3.77 % of base) : 192282.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 267668.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 290352.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 350433.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 371310.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 375414.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 426409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 432654.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -12 (-2.94 % of base) : 177905.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.82 % of base) : 341686.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-2.34 % of base) : 202778.dasm - System.Collections.Tests.ICollection_Generic_Tests`1+<>c[int]:<GetModifyEnumerables>b__20_1(System.Collections.Generic.IEnumerable`1[int]):ubyte:this (Tier1)
          -8 (-1.53 % of base) : 501096.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 180272.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 202591.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 241207.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 490355.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 179909.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
          -8 (-1.42 % of base) : 629693.dasm - System.Threading.Tasks.ConcurrentExclusiveSchedulerPair+ConcurrentExclusiveTaskScheduler:.ctor(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair,int,ubyte):this (Tier1)



windows arm64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,573,052 -152
coreclr_tests.run.windows.arm64.checked.mch 495,271,268 -684
libraries_tests.run.windows.arm64.Release.mch 330,811,772 -92

FullOpts (-928 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,561,656 -152
coreclr_tests.run.windows.arm64.checked.mch 156,582,164 -684
libraries_tests.run.windows.arm64.Release.mch 127,378,176 -92

Example diffs

benchmarks.run_pgo.windows.arm64.checked.mch

-16 (-3.77%) : 38757.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -16,41 +16,40 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; V06 tmp2 [V06,T07] ( 4, 3.00) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.99) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> -; V10 tmp6 [V10,T04] ( 4, 4.32) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 2.99) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> +; V10 tmp6 [V10,T04] ( 4, 4.32) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.20) long -> x0 multi-def "CSE - aggressive" ; V12 cse1 [V12,T09] ( 5, 2.99) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T10] ( 3, 0.25) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T10] ( 3, 0.25) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T12] ( 3, 0.02) long -> x0 "Spilling to split statement for tree" ; V15 rat1 [V15,T13] ( 3, 0.02) long -> x1 "runtime lookup" ; V16 rat2 [V16,T11] ( 3, 0.02) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T02] ( 3, 5.58) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T02] ( 3, 5.58) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG19
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG20
;; size=12 bbWeight=1 PerfScore 2.50 G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x15, x20 ; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG10
;; size=8 bbWeight=1 PerfScore 1.50 G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -67,44 +66,55 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG18
;; size=44 bbWeight=1 PerfScore 16.50 G_M21827_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18] - ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18] + ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E] - ; gcrRegs +[x1] - cmp x20, x1 - bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E] + ; gcrRegs +[x2] + cmp x1, x2 + bne G_M21827_IG17
;; size=28 bbWeight=1.00 PerfScore 8.97 G_M21827_IG06: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21] ; gcrRegs +[x22]
- b G_M21827_IG12 - ;; size=8 bbWeight=0.91 PerfScore 3.65 -G_M21827_IG07: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.91 PerfScore 2.74 +G_M21827_IG07: ; bbWeight=0.91, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M21827_IG18 + ;; size=4 bbWeight=0.91 PerfScore 0.91 +G_M21827_IG08: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x18] + cbz x1, G_M21827_IG14 + ;; size=16 bbWeight=1.00 PerfScore 9.97 +G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + b G_M21827_IG15 + ;; size=4 bbWeight=0.80 PerfScore 0.80 +G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG12
;; size=20 bbWeight=0.00 PerfScore 0.05
-G_M21827_IG08: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M21827_IG10
+G_M21827_IG11: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M21827_IG13
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21827_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.00 PerfScore 0.00
-G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -116,50 +126,16 @@ G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x15] b G_M21827_IG04 ;; size=32 bbWeight=0.00 PerfScore 0.03
-G_M21827_IG11: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x20] - ldr x1, [x23, #0x08] - ; gcrRegs +[x1] - ldr x2, [x21, #0x10] - ; gcrRegs +[x2] - cmp x20, x1 - csel x22, xzr, x2, ne - ; gcrRegs +[x22] - ;; size=16 bbWeight=0.08 PerfScore 0.58 -G_M21827_IG12: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1-x2 x20] - cbz x22, G_M21827_IG19 - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x23, [x1, #0x18] - cbz x23, G_M21827_IG16 - ;; size=20 bbWeight=1.00 PerfScore 10.96 -G_M21827_IG13: ; bbWeight=0.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - b G_M21827_IG15 - ;; size=4 bbWeight=0.04 PerfScore 0.04 -G_M21827_IG14: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] +[x20] - movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - ldr x1, [x23] - ; gcrRegs +[x1] - cmp x20, x1 - beq G_M21827_IG22 - b G_M21827_IG11 - ;; size=28 bbWeight=0.08 PerfScore 0.58 -G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1 x20] +[x22] - mov x0, x23 - b G_M21827_IG17 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0 + ;; size=20 bbWeight=0.20 PerfScore 0.60 +G_M21827_IG15: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + mov x0, x1
mov x1, x22 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY @@ -171,22 +147,38 @@ G_M21827_IG17: ; bbWeight=1.00, gcrefRegs=480000 {x19 x22}, byrefRegs=000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=1.00 PerfScore 3.49 -G_M21827_IG18: ; bbWeight=1.00, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=1.00 PerfScore 3.99 +G_M21827_IG16: ; bbWeight=1.00, epilog, nogc, extend + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=1.00 PerfScore 5.98 -G_M21827_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=1.00 PerfScore 3.99 +G_M21827_IG17: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x3, [x2] + ; gcrRegs +[x3] + cmp x1, x3 + beq G_M21827_IG21 + ldr x2, [x2, #0x08] + ; gcrRegs +[x2] + ldr x3, [x21, #0x10] + cmp x1, x2 + csel x22, xzr, x3, ne + ; gcrRegs +[x22] + cbnz x22, G_M21827_IG08 + ;; size=44 bbWeight=0.08 PerfScore 1.16 +G_M21827_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1-x3 x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.00 PerfScore 0.02 -G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.00 PerfScore 0.01 +G_M21827_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -195,7 +187,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 blr x1 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x19 ; gcrRegs +[x0] @@ -207,14 +199,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] b G_M21827_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
...

-16 (-3.77%) : 71937.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -16,41 +16,40 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; V06 tmp2 [V06,T06] ( 4, 3.29) ref -> x15
-; V07 tmp3 [V07,T07] ( 3, 3.06) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T07] ( 3, 3.06) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V09 tmp5 [V09,T08] ( 5, 2.29) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T05] ( 4, 3.31) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V10 tmp6 [V10,T05] ( 4, 3.31) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T04] ( 6, 3.51) long -> x0 multi-def "CSE - aggressive" ; V12 cse1 [V12,T09] ( 5, 2.29) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T13] ( 3, 0.19) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T13] ( 3, 0.19) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T11] ( 3, 1.29) long -> x0 "Spilling to split statement for tree" ; V15 rat1 [V15,T12] ( 3, 1.18) long -> x1 "runtime lookup" ; V16 rat2 [V16,T10] ( 3, 1.65) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T03] ( 3, 4.28) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T03] ( 3, 4.28) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG18
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG19
;; size=12 bbWeight=1 PerfScore 2.50 G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x15, x20 ; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50 G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -67,44 +66,53 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG16
;; size=44 bbWeight=1 PerfScore 16.50 G_M21827_IG05: ; bbWeight=0.76, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18] - ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18] + ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E] - ; gcrRegs +[x1] - cmp x20, x1 - bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E] + ; gcrRegs +[x2] + cmp x1, x2 + bne G_M21827_IG17
;; size=28 bbWeight=0.76 PerfScore 6.88 G_M21827_IG06: ; bbWeight=0.70, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21] ; gcrRegs +[x22]
- b G_M21827_IG12 - ;; size=8 bbWeight=0.70 PerfScore 2.80 -G_M21827_IG07: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.70 PerfScore 2.10 +G_M21827_IG07: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M21827_IG16 + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x18] + cbz x1, G_M21827_IG13 + ;; size=20 bbWeight=0.76 PerfScore 8.41 +G_M21827_IG08: ; bbWeight=0.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + b G_M21827_IG14 + ;; size=4 bbWeight=0.61 PerfScore 0.61 +G_M21827_IG09: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG11
;; size=20 bbWeight=0.29 PerfScore 3.82
-G_M21827_IG08: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M21827_IG10
+G_M21827_IG10: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M21827_IG12
;; size=4 bbWeight=0.24 PerfScore 0.24
-G_M21827_IG09: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.06 PerfScore 0.18
-G_M21827_IG10: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -116,50 +124,16 @@ G_M21827_IG10: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x15] b G_M21827_IG04 ;; size=32 bbWeight=0.29 PerfScore 2.21
-G_M21827_IG11: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x20] - ldr x1, [x23, #0x08] - ; gcrRegs +[x1] - ldr x2, [x21, #0x10] - ; gcrRegs +[x2] - cmp x20, x1 - csel x22, xzr, x2, ne - ; gcrRegs +[x22] - ;; size=16 bbWeight=0.06 PerfScore 0.45 -G_M21827_IG12: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1-x2 x20] - cbz x22, G_M21827_IG19 - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x23, [x1, #0x18] - cbz x23, G_M21827_IG16 - ;; size=20 bbWeight=0.76 PerfScore 8.41 -G_M21827_IG13: ; bbWeight=2.94, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - b G_M21827_IG15 - ;; size=4 bbWeight=2.94 PerfScore 2.94 -G_M21827_IG14: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] +[x20] - movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - ldr x1, [x23] - ; gcrRegs +[x1] - cmp x20, x1 - beq G_M21827_IG22 - b G_M21827_IG11 - ;; size=28 bbWeight=0.06 PerfScore 0.45 -G_M21827_IG15: ; bbWeight=0.61, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1 x20] +[x22] - mov x0, x23 - b G_M21827_IG17 - ;; size=8 bbWeight=0.61 PerfScore 0.92 -G_M21827_IG16: ; bbWeight=0.15, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.15, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.15 PerfScore 0.38 -G_M21827_IG17: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0 + ;; size=20 bbWeight=0.15 PerfScore 0.46 +G_M21827_IG14: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + mov x0, x1
mov x1, x22 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY @@ -171,22 +145,38 @@ G_M21827_IG17: ; bbWeight=0.76, gcrefRegs=480000 {x19 x22}, byrefRegs=000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=0.76 PerfScore 2.68 -G_M21827_IG18: ; bbWeight=0.76, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=0.76 PerfScore 3.06 +G_M21827_IG15: ; bbWeight=0.76, epilog, nogc, extend + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.76 PerfScore 4.59 -G_M21827_IG19: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=0.76 PerfScore 3.06 +G_M21827_IG16: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.24 PerfScore 1.41 -G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.24 PerfScore 0.94 +G_M21827_IG17: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x3, [x2] + ; gcrRegs +[x3] + cmp x1, x3 + beq G_M21827_IG20 + ldr x2, [x2, #0x08] + ; gcrRegs +[x2] + ldr x3, [x21, #0x10] + cmp x1, x2 + csel x22, xzr, x3, ne + ; gcrRegs +[x22] + b G_M21827_IG07 + ;; size=44 bbWeight=0.06 PerfScore 0.89 +G_M21827_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1-x3 x22]
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -195,7 +185,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 blr x1 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x19 ; gcrRegs +[x0] @@ -207,14 +197,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] b G_M21827_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] ldr x22, [x21, #0x08] ; gcrRegs +[x22] ...

-16 (-3.77%) : 91985.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -16,41 +16,40 @@ ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ; V06 tmp2 [V06,T07] ( 4, 3.04) ref -> x15
-; V07 tmp3 [V07,T05] ( 3, 3.87) long -> x0 "spilling helperCall"
+; V07 tmp3 [V07,T05] ( 3, 3.87) long -> x1 "spilling helperCall"
;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V09 tmp5 [V09,T08] ( 5, 2.90) ref -> x22 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
-; V10 tmp6 [V10,T04] ( 4, 4.19) ref -> x20 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V10 tmp6 [V10,T04] ( 4, 4.19) ref -> x1 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.24) long -> x0 multi-def "CSE - aggressive" ; V12 cse1 [V12,T09] ( 5, 2.90) long -> x21 "CSE - aggressive"
-; V13 cse2 [V13,T10] ( 3, 0.24) long -> x23 "CSE - conservative"
+; V13 cse2 [V13,T10] ( 3, 0.24) long -> x2 "CSE - conservative"
; V14 rat0 [V14,T12] ( 3, 0.18) long -> x0 "Spilling to split statement for tree" ; V15 rat1 [V15,T13] ( 3, 0.16) long -> x1 "runtime lookup" ; V16 rat2 [V16,T11] ( 3, 0.22) long -> x1 "fgMakeTemp is creating a new local variable"
-; V17 rat3 [V17,T02] ( 3, 5.42) long -> x23 "fgMakeTemp is creating a new local variable"
+; V17 rat3 [V17,T02] ( 3, 5.42) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M21827_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M21827_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #31, G_M21827_IG20
+ tbnz w1, #31, G_M21827_IG18
cmp w1, #0
- bgt G_M21827_IG21
+ bgt G_M21827_IG19
;; size=12 bbWeight=1 PerfScore 2.50 G_M21827_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x15, x20 ; gcrRegs +[x15]
- cbz x15, G_M21827_IG07
+ cbz x15, G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50 G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -67,44 +66,53 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=88000 {x15 x19}, byrefRegs=0000 {} movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M21827_IG19
+ bne G_M21827_IG17
;; size=44 bbWeight=1 PerfScore 16.50 G_M21827_IG05: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x19, #0x18] - ; gcrRegs +[x20]
+ ldr x1, [x19, #0x18] + ; gcrRegs +[x1]
movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32
- ldr x1, [x21, #0xD1FFAB1E] - ; gcrRegs +[x1] - cmp x20, x1 - bne G_M21827_IG14
+ ldr x2, [x21, #0xD1FFAB1E] + ; gcrRegs +[x2] + cmp x1, x2 + bne G_M21827_IG16
;; size=28 bbWeight=0.97 PerfScore 8.71 G_M21827_IG06: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x20]
+ ; gcrRegs -[x1-x2]
ldr x22, [x21] ; gcrRegs +[x22]
- b G_M21827_IG12 - ;; size=8 bbWeight=0.89 PerfScore 3.55 -G_M21827_IG07: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.89 PerfScore 2.66 +G_M21827_IG07: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M21827_IG17 + ldr x1, [x0, #0x38] + ldr x1, [x1] + ldr x1, [x1, #0x18] + cbz x1, G_M21827_IG13 + ;; size=20 bbWeight=0.97 PerfScore 10.65 +G_M21827_IG08: ; bbWeight=0.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + b G_M21827_IG14 + ;; size=4 bbWeight=0.77 PerfScore 0.77 +G_M21827_IG09: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x20]
- cbz x1, G_M21827_IG09
+ cbz x1, G_M21827_IG11
;; size=20 bbWeight=0.04 PerfScore 0.52
-G_M21827_IG08: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M21827_IG10
+G_M21827_IG10: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M21827_IG12
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M21827_IG09: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0.01 PerfScore 0.02
-G_M21827_IG10: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -116,50 +124,16 @@ G_M21827_IG10: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x15] b G_M21827_IG04 ;; size=32 bbWeight=0.04 PerfScore 0.30
-G_M21827_IG11: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x15] +[x20] - ldr x1, [x23, #0x08] - ; gcrRegs +[x1] - ldr x2, [x21, #0x10] - ; gcrRegs +[x2] - cmp x20, x1 - csel x22, xzr, x2, ne - ; gcrRegs +[x22] - ;; size=16 bbWeight=0.08 PerfScore 0.56 -G_M21827_IG12: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x1-x2 x20] - cbz x22, G_M21827_IG19 - ldr x1, [x0, #0x38] - ldr x1, [x1] - ldr x23, [x1, #0x18] - cbz x23, G_M21827_IG16 - ;; size=20 bbWeight=0.97 PerfScore 10.65 -G_M21827_IG13: ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - b G_M21827_IG15 - ;; size=4 bbWeight=0.40 PerfScore 0.40 -G_M21827_IG14: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] +[x20] - movz x23, #0xD1FFAB1E - movk x23, #0xD1FFAB1E LSL #16 - movk x23, #0xD1FFAB1E LSL #32 - ldr x1, [x23] - ; gcrRegs +[x1] - cmp x20, x1 - beq G_M21827_IG22 - b G_M21827_IG11 - ;; size=28 bbWeight=0.08 PerfScore 0.56 -G_M21827_IG15: ; bbWeight=0.77, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1 x20] +[x22] - mov x0, x23 - b G_M21827_IG17 - ;; size=8 bbWeight=0.77 PerfScore 1.16 -G_M21827_IG16: ; bbWeight=0.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M21827_IG13: ; bbWeight=0.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x15] +[x22]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ;; size=16 bbWeight=0.19 PerfScore 0.48 -G_M21827_IG17: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ mov x1, x0 + ;; size=20 bbWeight=0.19 PerfScore 0.58 +G_M21827_IG14: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + mov x0, x1
mov x1, x22 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTANY @@ -171,22 +145,38 @@ G_M21827_IG17: ; bbWeight=0.97, gcrefRegs=480000 {x19 x22}, byrefRegs=000 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- ;; size=20 bbWeight=0.97 PerfScore 3.39 -G_M21827_IG18: ; bbWeight=0.97, epilog, nogc, extend - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=24 bbWeight=0.97 PerfScore 3.87 +G_M21827_IG15: ; bbWeight=0.97, epilog, nogc, extend + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.97 PerfScore 5.81 -G_M21827_IG19: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18]
+ ;; size=16 bbWeight=0.97 PerfScore 3.87 +G_M21827_IG16: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x3, [x2] + ; gcrRegs +[x3] + cmp x1, x3 + beq G_M21827_IG20 + ldr x2, [x2, #0x08] + ; gcrRegs +[x2] + ldr x3, [x21, #0x10] + cmp x1, x2 + csel x22, xzr, x3, ne + ; gcrRegs +[x22] + b G_M21827_IG07 + ;; size=44 bbWeight=0.08 PerfScore 1.13 +G_M21827_IG17: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1-x3 x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.03 PerfScore 0.19 -G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M21827_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #22 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -195,7 +185,7 @@ G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 blr x1 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M21827_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov x0, x19 ; gcrRegs +[x0] @@ -207,14 +197,14 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0] b G_M21827_IG03 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M21827_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M21827_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] ldr x22, [x21, #0x08] ; gcrRegs +[x22] ...

+0 (0.00%) : 43256.dasm - System.Text.StringBuilder:Append(byref,int):this (Tier1)

@@ -54,29 +54,40 @@ G_M8170_IG04: ; bbWeight=0.82, gcrefRegs=100001 {x0 x20}, byrefRegs=20000 sbfiz x1, x22, #1, #32 add x0, x0, x1 cmp w19, #2
- bgt G_M8170_IG06
+ bgt G_M8170_IG08
;; size=20 bbWeight=0.82 PerfScore 2.86 G_M8170_IG05: ; bbWeight=0.45, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref, isz ldrh w1, [x21] strh w1, [x0] cmp w19, #2
- bne G_M8170_IG09
+ bne G_M8170_IG06
ldrh w1, [x21, #0x02] strh w1, [x0, #0x02]
- b G_M8170_IG09 - ;; size=28 bbWeight=0.45 PerfScore 4.77 -G_M8170_IG06: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref, isz
+ ;; size=24 bbWeight=0.45 PerfScore 4.32 +G_M8170_IG06: ; bbWeight=0.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; byrRegs -[x0 x21] + add w0, w22, w19 + str w0, [x20, #0x18] + ;; size=8 bbWeight=0.82 PerfScore 1.23 +G_M8170_IG07: ; bbWeight=0.82, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.82 PerfScore 3.27 +G_M8170_IG08: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, gcvars, byref, isz + ; byrRegs +[x0 x21]
sxtw x1, w19 lsl x2, x1, #1 cmp x2, #2
- bne G_M8170_IG08
+ bne G_M8170_IG10
;; size=16 bbWeight=0.36 PerfScore 1.09
-G_M8170_IG07: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
+G_M8170_IG09: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
ldrh w1, [x21] strh w1, [x0]
- b G_M8170_IG09
+ b G_M8170_IG06
;; size=12 bbWeight=0.18 PerfScore 0.91
-G_M8170_IG08: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
+G_M8170_IG10: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 {x0 x21}, byref
mov x1, x21 ; byrRegs +[x1] movz x3, #0xD1FFAB1E // code for <unknown method> @@ -86,18 +97,9 @@ G_M8170_IG08: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200001 { blr x3 ; byrRegs -[x0-x1 x21] ; gcr arg pop 0
- ;; size=24 bbWeight=0.18 PerfScore 1.09 -G_M8170_IG09: ; bbWeight=0.82, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - add w0, w22, w19 - str w0, [x20, #0x18] - ;; size=8 bbWeight=0.82 PerfScore 1.23 -G_M8170_IG10: ; bbWeight=0.82, epilog, nogc, extend - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.82 PerfScore 3.27 -G_M8170_IG11: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, gcvars, byref
+ b G_M8170_IG06 + ;; size=28 bbWeight=0.18 PerfScore 1.27 +G_M8170_IG11: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
; byrRegs +[x21] mov x0, x20 ; gcrRegs +[x0] @@ -142,7 +144,7 @@ G_M8170_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 b G_M8170_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 28, PerfScore 35.05, instruction count 73, allocated bytes for code 292 (MethodHash=800fe015) for method System.Text.StringBuilder:Append(byref,int):this (Tier1)
+; Total bytes of code 292, prolog size 28, PerfScore 34.77, instruction count 73, allocated bytes for code 292 (MethodHash=800fe015) for method System.Text.StringBuilder:Append(byref,int):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 77160.dasm - System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeysDefaultComparerNoNext_Ascending(int,int):int:this (Tier1)

@@ -46,31 +46,31 @@ G_M16336_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldr w0, [x0, x3] ; gcrRegs -[x0] cmp w4, w0
- bge G_M16336_IG04
+ bge G_M16336_IG06
;; size=56 bbWeight=1 PerfScore 19.50 G_M16336_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movn w3, #0
- b G_M16336_IG05 - ;; size=8 bbWeight=0.63 PerfScore 0.95 -G_M16336_IG04: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.37 PerfScore 0.37 -G_M16336_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.63 PerfScore 0.32 +G_M16336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub w0, w1, w2 cmp w3, #0 csel w0, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M16336_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M16336_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M16336_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16336_IG06: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + cmp w4, w0 + cset x3, gt + b G_M16336_IG04 + ;; size=12 bbWeight=0.37 PerfScore 0.73 +G_M16336_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 108, prolog size 8, PerfScore 25.82, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 25.55, instruction count 27, allocated bytes for code 108 (MethodHash=56a7c02f) for method System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 78492.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -54,59 +54,54 @@ G_M64750_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 8.00 G_M64750_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w19
- beq G_M64750_IG11
+ beq G_M64750_IG12
;; size=8 bbWeight=1 PerfScore 1.50 G_M64750_IG03: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz cmp w20, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x24, x20, #2, #32 ldr w1, [x21, x24] cmp w19, w23
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ldr w2, [x21, w19, UXTW #2] ldr x0, [x22, #0x18] movz x3, #0xD1FFAB1E // code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x0, x3
- bne G_M64750_IG12
+ bne G_M64750_IG10
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x20] ldr w3, [x0, #0x08] cmp w1, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x4, x1, #2, #32 add x4, x4, #16 ldr w4, [x0, x4] cmp w2, w3
- bhs G_M64750_IG10
+ bhs G_M64750_IG11
ubfiz x3, x2, #2, #32 add x3, x3, #16 ldr w0, [x0, x3] ; gcrRegs -[x0] cmp w4, w0
- bge G_M64750_IG05
+ bge G_M64750_IG09
;; size=112 bbWeight=1 PerfScore 38.50 G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref ; gcrRegs -[x22] movn w3, #0
- b G_M64750_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.95 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref - cmp w4, w0 - cset x3, gt - ;; size=8 bbWeight=0.36 PerfScore 0.36 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ;; size=4 bbWeight=0.64 PerfScore 0.32 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
sub w0, w1, w2 cmp w3, #0 csel w25, w0, w3, eq ;; size=12 bbWeight=1 PerfScore 1.50
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w25, #0
- bgt G_M64750_IG09
+ bgt G_M64750_IG08
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x21] ldr x25, [sp, #0x48] ldp x23, x24, [sp, #0x38] @@ -115,7 +110,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldp fp, lr, [sp], #0x50 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
+G_M64750_IG08: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref
; byrRegs +[x21] ldr w0, [x21, x24] add x1, x21, x24 @@ -123,13 +118,29 @@ G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w2, [x21, w19, UXTW #2] str w2, [x1] str w0, [x21, w19, UXTW #2]
- b G_M64750_IG08
+ b G_M64750_IG07
;; size=24 bbWeight=0.43 PerfScore 4.04
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x1 x21]
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; byrRegs -[x1] + cmp w4, w0 + cset x3, gt + b G_M64750_IG05 + ;; size=12 bbWeight=0.36 PerfScore 0.73 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref + ; gcrRegs +[x22] + ldr x0, [x22, #0x08] + ; gcrRegs +[x0] + ldr x3, [x22, #0x18] + blr x3 + ; gcrRegs -[x0 x22] + sxtw w25, w0 + b G_M64750_IG06 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x21]
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref
; gcrRegs +[x22] ; byrRegs +[x21] movz x0, #8 @@ -145,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x2 blr x2 b G_M64750_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - ldr x0, [x22, #0x08] - ; gcrRegs +[x0] - ldr x3, [x22, #0x18] - blr x3 - ; gcrRegs -[x0 x22] - sxtw w25, w0 - b G_M64750_IG07 - ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 320, prolog size 24, PerfScore 63.36, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 320, prolog size 24, PerfScore 63.09, instruction count 80, allocated bytes for code 320 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.arm64.checked.mch

-20 (-10.87%) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)

@@ -2,20 +2,22 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> x21 single-def -; V01 arg1 [V01,T01] ( 4, 3 ) long -> x20 single-def -; V02 arg2 [V02,T00] ( 10, 6.82) ref -> x19 class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> x20 single-def +; V01 arg1 [V01,T02] ( 3, 3 ) long -> x21 single-def +; V02 arg2 [V02,T00] ( 7, 7 ) ref -> x19 class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> x1 "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -24,43 +26,16 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] mov fp, sp
- mov x21, x0 - ; byrRegs +[x21] - mov x20, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x21, x1
mov x19, x2 ; gcrRegs +[x19] ;; size=28 bbWeight=1 PerfScore 5.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - cbz x19, G_M14814_IG06
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + cbnz x19, G_M14814_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz - mov x0, x20 - mov x1, x19 - ; gcrRegs +[x1] - bl <unknown method> - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - cbz x19, G_M14814_IG07 - ;; size=20 bbWeight=0.99 PerfScore 3.48 -G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref - ; gcrRegs -[x0] - mov x0, x21 - ; byrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - ;; size=8 bbWeight=0.82 PerfScore 0.82 -G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - b <unknown method> - ; gcr arg pop 0 - ;; size=16 bbWeight=0.82 PerfScore 4.09 -G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, gcvars, byref, isz - ; gcrRegs -[x1] - ; byrRegs -[x0]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -73,7 +48,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x20
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M14814_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + mov x0, x21
mov x1, x19 ; gcrRegs +[x1] bl <unknown method> @@ -81,11 +58,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbnz x19, G_M14814_IG04 - ;; size=56 bbWeight=0.01 PerfScore 0.07 -G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19] - ; byrRegs -[x21]
+ cbz x19, G_M14814_IG06 + mov x0, x20 + ; gcrRegs -[x0] + ; byrRegs +[x0] + mov x1, x19 + ; gcrRegs +[x1] + ;; size=28 bbWeight=1 PerfScore 4.50 +G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + b <unknown method> + ; gcr arg pop 0 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x1 x19] + ; byrRegs -[x0 x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -109,7 +98,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 28, PerfScore 14.46, instruction count 46, allocated bytes for code 184 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 164, prolog size 28, PerfScore 21.50, instruction count 41, allocated bytes for code 164 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: @@ -120,7 +109,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-6.67%) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)

@@ -2,37 +2,38 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3648
; No matching PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 4, 2 ) byref -> x0 single-def -; V01 arg1 [V01,T08] ( 5, 3 ) long -> x1 single-def -; V02 arg2 [V02,T07] ( 5, 3 ) ref -> x2 class-hnd single-def <System.Object> -;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref -;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T10] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> -; V06 tmp2 [V06,T11] ( 2, 0 ) int -> x19 "Inline return value spill temp" -; V07 tmp3 [V07,T02] ( 4, 360.15) byref -> x3 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 3, 16.31) long -> x4 "Inlining Arg" -; V09 tmp5 [V09,T01] ( 4, 711.15) int -> x5 "Inline stloc first use temp" -; V10 tmp6 [V10,T00] ( 5,1409 ) int -> x6 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 18.46) byref -> x7 "Inline stloc first use temp" -; V12 tmp8 [V12,T03] ( 5, 96 ) int -> x8 "Inline stloc first use temp" -; V13 tmp9 [V13,T06] ( 2, 12.31) long -> x9 "Inline stloc first use temp" -; V14 tmp10 [V14,T12] ( 3, 0 ) long -> x19 "Inline stloc first use temp" -;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V00 arg0 [V00,T10] ( 4, 3.42) byref -> x0 single-def +; V01 arg1 [V01,T08] ( 5, 11.96) long -> x1 single-def +; V02 arg2 [V02,T09] ( 5, 4.42) ref -> x2 class-hnd single-def <System.Object> +;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref +;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <int[]> +; V06 tmp2 [V06,T12] ( 2, 2.00) int -> x9 "Inline return value spill temp" +; V07 tmp3 [V07,T04] ( 4, 67.48) byref -> x3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T05] ( 3, 66.04) long -> x4 "Inlining Arg" +; V09 tmp5 [V09,T03] ( 4,100.95) int -> x5 "Inline stloc first use temp" +; V10 tmp6 [V10,T00] ( 5,138.86) int -> x6 "Inline stloc first use temp" +; V11 tmp7 [V11,T02] ( 5,101.32) byref -> x7 "Inline stloc first use temp" +; V12 tmp8 [V12,T01] ( 5,122.66) int -> x8 "Inline stloc first use temp" +; V13 tmp9 [V13,T06] ( 2, 62.04) long -> x9 "Inline stloc first use temp" +; V14 tmp10 [V14,T07] ( 3, 17.13) long -> x9 "Inline stloc first use temp" +;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+G_M34926_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref ; gcrRegs +[x2] ; byrRegs +[x0] @@ -56,7 +57,7 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, by lsr x5, x5, x6 mov w6, wzr ;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+G_M34926_IG03: ; bbWeight=31.02, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w7, w5, #1 mov w8, #24 smull x7, w7, w8 @@ -66,40 +67,56 @@ G_M34926_IG03: ; bbWeight=6.15, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x ldr x9, [x7, #0x08] and w8, w8, #0xD1FFAB1E cmp x9, x4
- beq G_M34926_IG11 - ;; size=36 bbWeight=6.15 PerfScore 70.77 -G_M34926_IG04: ; bbWeight=77.54, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ beq G_M34926_IG07 + ;; size=36 bbWeight=31.02 PerfScore 356.71 +G_M34926_IG04: ; bbWeight=29.41, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
; byrRegs -[x7]
- cbz w8, G_M34926_IG09 - ;; size=4 bbWeight=77.54 PerfScore 77.54 -G_M34926_IG05: ; bbWeight=352, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
+ cbz w8, G_M34926_IG12 + ;; size=4 bbWeight=29.41 PerfScore 29.41 +G_M34926_IG05: ; bbWeight=34.46, gcrefRegs=0004 {x2}, byrefRegs=0009 {x0 x3}, byref, isz
add w6, w6, #1
- ldr w7, [x3, #0x04]
+ ldr w9, [x3, #0x04]
add w5, w5, w6
- and w5, w7, w5
+ and w5, w9, w5
cmp w6, #8 blt G_M34926_IG03
- ;; size=24 bbWeight=352 PerfScore 2112.00 -G_M34926_IG06: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
+ ;; size=24 bbWeight=34.46 PerfScore 206.79 +G_M34926_IG06: ; bbWeight=0.90, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs -[x3]
- b G_M34926_IG09 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M34926_IG07: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz - cmp w19, #1 - bne G_M34926_IG09
+ b G_M34926_IG12 + ;; size=4 bbWeight=0.90 PerfScore 0.90 +G_M34926_IG07: ; bbWeight=8.06, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, byref, isz + ; byrRegs +[x3 x7] + ldr x9, [x7, #0x10] + eor x9, x9, x1 + cmp x9, #1 + bhi G_M34926_IG04 + ;; size=16 bbWeight=8.06 PerfScore 40.32 +G_M34926_IG08: ; bbWeight=0.20, gcrefRegs=0004 {x2}, byrefRegs=0081 {x0 x7}, byref, isz + ; byrRegs -[x3] + dmb ishld + ldr w3, [x7] + cmp w3, w8 + bne G_M34926_IG12 + ;; size=16 bbWeight=0.20 PerfScore 2.92 +G_M34926_IG09: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs -[x7] + cmp w9, #1 + bne G_M34926_IG12 + ;; size=8 bbWeight=1.00 PerfScore 1.50 +G_M34926_IG10: ; bbWeight=0.52, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
mov x1, x2 ; gcrRegs +[x1] bl <unknown method> ; gcrRegs -[x1-x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M34926_IG08: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.78 +G_M34926_IG11: ; bbWeight=0.52, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04 +G_M34926_IG12: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs +[x2] ; byrRegs +[x0] movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) @@ -110,39 +127,24 @@ G_M34926_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 { ; gcrRegs -[x2] ; byrRegs -[x0] ; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00 -G_M34926_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ;; size=20 bbWeight=0.90 PerfScore 4.92 +G_M34926_IG13: ; bbWeight=0.90, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M34926_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0089 {x0 x3 x7}, gcvars, byref, isz - ; gcrRegs +[x2] - ; byrRegs +[x0 x3 x7] - ldr x9, [x7, #0x10] - eor x19, x9, x1 - cmp x19, #1 - bhi G_M34926_IG04 - dmb ishld - ldr w3, [x7] - ; byrRegs -[x3] - cmp w3, w8 - bne G_M34926_IG09 - b G_M34926_IG07 - ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.90 PerfScore 1.79
-; Total bytes of code 240, prolog size 12, PerfScore 2280.31, instruction count 60, allocated bytes for code 240 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 224, prolog size 8, PerfScore 666.08, instruction count 56, allocated bytes for code 224 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -153,10 +155,7 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24] - 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! - E4 end - E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end E4 end

-20 (-5.95%) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)

@@ -2,25 +2,28 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 98 ) long -> x20 single-def -; V01 arg1 [V01,T07] ( 3, 98 ) long -> x21 single-def -; V02 arg2 [V02,T05] ( 5,100 ) int -> x19 single-def -; V03 loc0 [V03,T01] ( 5,385 ) int -> x23
+; V00 arg0 [V00,T07] ( 3, 74.00) long -> x20 single-def +; V01 arg1 [V01,T08] ( 3, 74.00) long -> x21 single-def +; V02 arg2 [V02,T06] ( 5, 76.00) int -> x19 single-def +; V03 loc0 [V03,T01] ( 5,289.00) int -> x23
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T10] ( 3, 6.00) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp4 [V08,T02] ( 2,384 ) ref -> x26 class-hnd exact "Inlining Arg" <System.String> -; V09 tmp5 [V09,T03] ( 2,384 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> x24 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp4 [V08,T02] ( 2,288.00) ref -> x26 class-hnd exact "Inlining Arg" <System.String> +; V09 tmp5 [V09,T03] ( 2,288.00) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T04] ( 3,288 ) long -> x25 "CSE - aggressive" -; V12 cse1 [V12,T08] ( 4, 99 ) long -> x22 "CSE - aggressive"
+; V11 cse0 [V11,T04] ( 3,216.00) long -> x25 "CSE - aggressive" +; V12 cse1 [V12,T09] ( 4, 75.00) long -> x22 "CSE - aggressive" +; V13 cse2 [V13,T05] ( 5, 88.00) ref -> x1 multi-def "CSE - aggressive"
; ; Lcl frame size = 0 @@ -41,10 +44,23 @@ G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x22, #0xD1FFAB1E LSL #32 ldr x0, [x22] ; gcrRegs +[x0]
- cbnz x0, G_M44736_IG07
+ cbz x0, G_M44736_IG04
;; size=20 bbWeight=1 PerfScore 5.50
-G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ movz x0, #32 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ;; size=44 bbWeight=0.80 PerfScore 6.80 +G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -68,8 +84,8 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, wzr cmp w19, #0 ble G_M44736_IG08
- ;; size=72 bbWeight=1 PerfScore 13.50 -G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1.00 PerfScore 13.50 +G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x24, [x22] ; gcrRegs +[x24] sbfiz x25, x23, #3, #32 @@ -78,7 +94,7 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[x0] mov x26, x0 ; gcrRegs +[x26]
- ldr x0, [x25, x21]
+ ldr x0, [x21, x25]
; gcrRegs -[x0] bl <unknown method> ; gcrRegs +[x0] @@ -95,52 +111,36 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x24 x26]
- cbz w0, G_M44736_IG06 - ;; size=72 bbWeight=96 PerfScore 2304.00 -G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M44736_IG07 + ;; size=72 bbWeight=72.00 PerfScore 1728.00 +G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x1, #8 + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + mov x0, x1 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0] + ;; size=36 bbWeight=28.80 PerfScore 216.00 +G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
- cmp w19, w23 - ble G_M44736_IG08 - b G_M44736_IG04 - ;; size=16 bbWeight=96 PerfScore 288.00 -G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #8 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG05 - ;; size=48 bbWeight=0.32 PerfScore 3.00 -G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x0, #32 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - movz x1, #8 - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M44736_IG03 - ;; size=48 bbWeight=0.01 PerfScore 0.06 -G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ cmp w23, w19 + blt G_M44736_IG05 + ;; size=12 bbWeight=72.00 PerfScore 144.00 +G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x25, x26, [sp, #0x40] ldp x23, x24, [sp, #0x30] ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 336, prolog size 24, PerfScore 2621.07, instruction count 84, allocated bytes for code 336 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 316, prolog size 24, PerfScore 2126.80, instruction count 79, allocated bytes for code 316 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================ Unwind Info: @@ -151,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 79 (0x0004f) Actual length = 316 (0x00013c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.35%) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)

@@ -2,55 +2,124 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 3 ) int -> x19 single-def
+; V00 arg0 [V00,T03] ( 6, 41.78) int -> x19 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T01] ( 5, 39 ) int -> x20 -; V03 loc2 [V03,T08] ( 3, 0 ) int -> x0 -; V04 loc3 [V04,T06] ( 7, 0 ) int -> x20
+; V02 loc1 [V02,T00] ( 5,165.21) int -> x1 +; V03 loc2 [V03,T02] ( 3, 76.26) int -> x2 +; V04 loc3 [V04,T01] ( 8,119.79) int -> x20
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T10] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[int]>
-; V08 tmp3 [V08,T02] ( 2, 39 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -;* V09 tmp4 [V09,T03] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP -; V10 tmp5 [V10,T00] ( 2, 78 ) byref -> x1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP -;* V11 tmp6 [V11,T04] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP -; V12 tmp7 [V12,T09] ( 3, 0 ) int -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T06] ( 2, 38.89) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +;* V09 tmp4 [V09,T08] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP +; V10 tmp5 [V10,T07] ( 2, 2 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP +;* V11 tmp6 [V11,T09] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP +; V12 tmp7 [V12,T04] ( 3, 40.27) int -> x0 "fgMakeTemp is creating a new local variable"
; V13 tmp8 [V13,T11] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V14 rat0 [V14,T10] ( 3, 0 ) int -> x1 "ReplaceWithLclVar is creating a new local variable"
+; V14 rat0 [V14,T05] ( 3, 40.27) int -> x1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0
-G_M22313_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp mov w19, w0 ;; size=16 bbWeight=1 PerfScore 3.00 G_M22313_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M22313_IG04 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M22313_IG03: ; bbWeight=39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E
+ tbnz w19, #31, G_M22313_IG15 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + mov w1, wzr + ;; size=20 bbWeight=1 PerfScore 3.00 +G_M22313_IG03: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + ldr w2, [x0, w1, UXTW #2] + cmp w19, w2 + ble G_M22313_IG13 + ;; size=12 bbWeight=37.89 PerfScore 170.53 +G_M22313_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + add w1, w1, #1 + cmp w1, #72 + blt G_M22313_IG03 + ;; size=12 bbWeight=42.11 PerfScore 84.21 +G_M22313_IG05: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0] + orr w20, w19, #1 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + bge G_M22313_IG08 + ;; size=16 bbWeight=0.53 PerfScore 1.32 +G_M22313_IG06: ; bbWeight=25.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov w0, w20 + movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte
movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- mov w20, wzr - b G_M22313_IG05 - ;; size=20 bbWeight=39 PerfScore 117.00 -G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + cbnz w0, G_M22313_IG10 + ;; size=28 bbWeight=25.81 PerfScore 180.70 +G_M22313_IG07: ; bbWeight=28.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add w20, w20, #2 + movn w0, #0xD1FFAB1E LSL #16 + cmp w20, w0 + blt G_M22313_IG06 + ;; size=16 bbWeight=28.68 PerfScore 71.71 +G_M22313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w19 + ;; size=4 bbWeight=0.36 PerfScore 0.18 +G_M22313_IG09: ; bbWeight=0.36, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.36 PerfScore 1.08 +G_M22313_IG10: ; bbWeight=6.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + sub w0, w20, #1 + movz w1, #0xD1FFAB1E + movk w1, #0xD1FFAB1E LSL #16 + smull x1, w1, w0 + asr x1, x1, #32 + asr w2, w1, #4 + add w1, w2, w1, LSR #31 + mov w2, #101 + msub w0, w1, w2, w0 + cbz w0, G_M22313_IG07 + ;; size=40 bbWeight=6.71 PerfScore 67.12 +G_M22313_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, w20 + ;; size=4 bbWeight=0.17 PerfScore 0.08 +G_M22313_IG12: ; bbWeight=0.17, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.17 PerfScore 0.50 +G_M22313_IG13: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w2 + ;; size=4 bbWeight=0.47 PerfScore 0.24 +G_M22313_IG14: ; bbWeight=0.47, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.47 PerfScore 1.42 +G_M22313_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x19, x0 + ; gcrRegs +[x19]
movz x0, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -61,7 +130,7 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x19
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -69,73 +138,15 @@ G_M22313_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0] bl CORINFO_HELP_THROW
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
- ;; size=76 bbWeight=0 PerfScore 0.00 -G_M22313_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz - ; byrRegs +[x1] - ldr w0, [x1, w20, UXTW #2] - cmp w19, w0 - ble G_M22313_IG06 - add w20, w20, #1 - cmp w20, #72 - blt G_M22313_IG05 - orr w20, w19, #1 - b G_M22313_IG09 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M22313_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[x1] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov w0, w20 - movz x1, #0xD1FFAB1E // code for System.Collections.HashHelpers:IsPrime(int):ubyte - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M22313_IG08 - sub w0, w20, #1 - movz w1, #0xD1FFAB1E - movk w1, #0xD1FFAB1E LSL #16 - smull x1, w1, w0 - asr x1, x1, #32 - asr w2, w1, #4 - add w1, w2, w1, LSR #31 - mov w2, #101 - msub w0, w1, w2, w0 - cbnz w0, G_M22313_IG11 - ;; size=68 bbWeight=0 PerfScore 0.00 -G_M22313_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add w20, w20, #2 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movn w0, #0xD1FFAB1E LSL #16 - cmp w20, w0 - blt G_M22313_IG07 - mov w0, w19 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M22313_IG10: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M22313_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, w20 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M22313_IG12: ; bbWeight=0, epilog, nogc, extend - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0 PerfScore 0.00
+ brk_windows #0 + ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 121.00, instruction count 69, allocated bytes for code 276 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 585.07, instruction count 72, allocated bytes for code 288 (MethodHash=5705a8d6) for method System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +157,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 72 (0x00048) Actual length = 288 (0x000120)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+5.56%) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)

@@ -2,36 +2,39 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data ; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T09] ( 5, 2.83) long -> x0 single-def -; V01 arg1 [V01,T05] ( 6, 15.64) long -> x19 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) long -> x2 single-def -; V03 loc0 [V03,T02] ( 18, 51.36) long -> x20 -; V04 loc1 [V04,T06] ( 14, 11.73) int -> x21
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> x0 single-def +; V01 arg1 [V01,T05] ( 6, 19.60) long -> x19 single-def +; V02 arg2 [V02,T07] ( 3, 3 ) long -> x2 single-def +; V03 loc0 [V03,T02] ( 18, 91.25) long -> x20 +; V04 loc1 [V04,T08] ( 14, 4.44) int -> x21
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T04] ( 6, 18.08) long -> x3 -; V07 loc4 [V07,T10] ( 5, 2.64) long -> x2 -; V08 loc5 [V08,T07] ( 2, 8.41) long -> x1
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> x3 +; V07 loc4 [V07,T09] ( 5, 3.54) long -> x2 +; V08 loc5 [V08,T06] ( 2, 17.38) long -> x1
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T00] ( 6,100.29) long -> x3 "Inlining Arg" -; V13 tmp4 [V13,T01] ( 5, 83.57) byref -> x4 "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> x3 "Inlining Arg" +; V13 tmp4 [V13,T01] ( 5,169.35) byref -> x4 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T03] ( 3, 30.76) byref -> x1 single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> x1 single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T11] ( 3, 0.93) byref -> x0 "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> x0 "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V24 cse0 [V24,T13] ( 2, 0.85) ref -> x1 "CSE - aggressive"
; ; Lcl frame size = 8 @@ -45,18 +48,24 @@ G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov x20, xzr cmp x2, #4
- blo G_M6063_IG06
+ bhs G_M6063_IG05
;; size=12 bbWeight=1 PerfScore 2.00
-G_M6063_IG03: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbz w2, #1, G_M6063_IG13 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG09 + ;; size=4 bbWeight=0.32 PerfScore 0.32 +G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x1, x2, #4
- ;; size=4 bbWeight=0.05 PerfScore 0.03 -G_M6063_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.45 PerfScore 0.22 +G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x3, x20, #1 ldr x3, [x0, x3] tst x3, #0xD1FFAB1E
- bne G_M6063_IG12 - ;; size=16 bbWeight=0.51 PerfScore 2.79 -G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bne G_M6063_IG18 + ;; size=16 bbWeight=18.82 PerfScore 103.49 +G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x20, x19 strb w3, [x4] lsr x3, x3, #16 @@ -67,52 +76,44 @@ G_M6063_IG05: ; bbWeight=8.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre strb w3, [x4, #0x03] add x20, x20, #4 cmp x1, x20
- bhs G_M6063_IG04 - ;; size=44 bbWeight=8.36 PerfScore 79.39 -G_M6063_IG06: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbz w2, #1, G_M6063_IG09 - ;; size=4 bbWeight=0.07 PerfScore 0.07 -G_M6063_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bhs G_M6063_IG06 + ;; size=44 bbWeight=16.93 PerfScore 160.88 +G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG03 + ;; size=4 bbWeight=0.62 PerfScore 0.62 +G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsl x1, x20, #1 ldr w21, [x0, x1] tst w21, #0xD1FFAB1E
- bne G_M6063_IG14 - ;; size=16 bbWeight=0.32 PerfScore 1.75 -G_M6063_IG08: ; bbWeight=5.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M6063_IG12 + ;; size=16 bbWeight=0.32 PerfScore 1.79 +G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tst w21, #0xD1FFAB1E + bne G_M6063_IG17 + ;; size=8 bbWeight=0.53 PerfScore 0.80 +G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M6063_IG16 + ;; size=4 bbWeight=0.43 PerfScore 0.43 +G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x1, x20, x19 strb w21, [x1] lsr w3, w21, #16 strb w3, [x1, #0x01] add x20, x20, #2
- ;; size=20 bbWeight=5.13 PerfScore 20.51 -G_M6063_IG09: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tbnz w2, #0, G_M6063_IG16 - ;; size=4 bbWeight=0.52 PerfScore 0.52 -G_M6063_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.17 PerfScore 0.68 +G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + tbnz w2, #0, G_M6063_IG20 + ;; size=4 bbWeight=0.47 PerfScore 0.47 +G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x20
- ;; size=4 bbWeight=0.26 PerfScore 0.13 -G_M6063_IG11: ; bbWeight=0.26, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=0.26 PerfScore 1.31 -G_M6063_IG12: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - sxtw w21, w3 - tst w21, #0xD1FFAB1E - bne G_M6063_IG14 - ;; size=12 bbWeight=0.19 PerfScore 0.38 -G_M6063_IG13: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add x0, x20, x19 - strb w21, [x0] - lsr w1, w21, #16 - strb w1, [x0, #0x01] - lsr x21, x3, #32 - add x20, x20, #2 - ;; size=24 bbWeight=0.15 PerfScore 0.77 -G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tst w21, #0xD1FFAB1E - bne G_M6063_IG15
+ ;; size=16 bbWeight=1 PerfScore 5.00 +G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -125,25 +126,39 @@ G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr x2, [x2] blr x2 ; gcr arg pop 0
- ;; size=52 bbWeight=0 PerfScore 0.00 -G_M6063_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.43 PerfScore 3.61 +G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tst w21, #0xD1FFAB1E
- beq G_M6063_IG17
+ bne G_M6063_IG14 + b G_M6063_IG21 + ;; size=12 bbWeight=0.53 PerfScore 1.33 +G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sxtw w21, w3 + tst w21, #0xD1FFAB1E + bne G_M6063_IG10 + ;; size=12 bbWeight=0.38 PerfScore 0.75 +G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add x0, x20, x19 + strb w21, [x0] + lsr w1, w21, #16 + strb w1, [x0, #0x01] + lsr x21, x3, #32 + add x20, x20, #2
b G_M6063_IG10
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M6063_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lsl x1, x20, #1 - ldrh w21, [x0, x1]
+ ;; size=28 bbWeight=0.20 PerfScore 1.17 +G_M6063_IG20: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lsl x2, x20, #1 + ldrh w21, [x0, x2]
cmp w21, #127
- bhi G_M6063_IG10 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M6063_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bhi G_M6063_IG14 + ;; size=16 bbWeight=0.37 PerfScore 2.06 +G_M6063_IG21: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
strb w21, [x20, x19] add x20, x20, #1
- b G_M6063_IG10 - ;; size=12 bbWeight=0 PerfScore 0.00
+ b G_M6063_IG14 + ;; size=12 bbWeight=0.30 PerfScore 0.75
-; Total bytes of code 288, prolog size 20, PerfScore 113.65, instruction count 72, allocated bytes for code 288 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
+; Total bytes of code 304, prolog size 20, PerfScore 291.49, instruction count 76, allocated bytes for code 304 (MethodHash=53fae850) for method System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
; ============================================================ Unwind Info: @@ -154,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+5.59%) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)

@@ -2,39 +2,45 @@ ; Emitting BLENDED_CODE for generic ARM64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; fp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 3
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 11, 3 ) ref -> x19 class-hnd single-def <System.Reflection.MethodBase> -; V01 arg1 [V01,T02] ( 4, 2.29) int -> x21 single-def -; V02 arg2 [V02,T01] ( 9, 2.43) int -> x20 -; V03 arg3 [V03,T04] ( 6, 2 ) int -> x23 single-def -; V04 arg4 [V04,T03] ( 9, 2 ) ref -> x22 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T05] ( 11, 5.22) ref -> x20 class-hnd single-def <System.Reflection.MethodBase> +; V01 arg1 [V01,T06] ( 4, 4.00) int -> x21 single-def +; V02 arg2 [V02,T04] ( 9, 5.91) int -> x19 +; V03 arg3 [V03,T08] ( 6, 3.65) int -> x23 single-def +; V04 arg4 [V04,T07] ( 8, 3.83) ref -> x22 class-hnd single-def <System.Type[]>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]> ;* V06 loc1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref ;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref ;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T08] ( 5, 0 ) ref -> x20 class-hnd single-def <System.Reflection.ParameterInfo> -; V10 loc5 [V10,T07] ( 7, 0 ) int -> x19 -; V11 loc6 [V11,T10] ( 3, 0 ) ref -> x0 class-hnd <System.Type>
+; V09 loc4 [V09,T13] ( 4, 0.46) ref -> x21 class-hnd single-def <System.Reflection.ParameterInfo> +; V10 loc5 [V10,T00] ( 6, 39.53) int -> x19 +; V11 loc6 [V11,T01] ( 3, 19.36) ref -> x0 class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V14 tmp2 [V14,T13] ( 3, 0 ) int -> x0 "Span.get_Item index" -; V15 tmp3 [V15,T15] ( 2, 0 ) int -> x0 "Span.get_Item index"
+; V14 tmp2 [V14,T17] ( 3, 0.33) int -> x0 "Span.get_Item index" +; V15 tmp3 [V15,T12] ( 2, 0.49) int -> x0 "Span.get_Item index"
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> -;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> -; V20 tmp8 [V20,T09] ( 4, 0 ) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP -; V21 tmp9 [V21,T06] ( 8, 0 ) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP -;* V22 tmp10 [V22 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP -;* V23 tmp11 [V23 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP -; V24 tmp12 [V24,T11] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V25 tmp13 [V25,T12] ( 3, 0 ) ref -> x0 single-def "argument with side effect" -; V26 cse0 [V26,T05] ( 3, 0.00) ref -> x1 "CSE - conservative"
+;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.ParameterInfo> +;* V21 tmp9 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> +; V22 tmp10 [V22,T09] ( 4, 2.98) byref -> x21 "field V05._reference (fldOffset=0x0)" P-INDEP +; V23 tmp11 [V23,T02] ( 9, 11.61) int -> x24 "field V05._length (fldOffset=0x8)" P-INDEP +;* V24 tmp12 [V24 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-DEP +;* V25 tmp13 [V25 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-DEP +; V26 tmp14 [V26,T16] ( 3, 0.33) ref -> x0 single-def "argument with side effect" +; V27 tmp15 [V27,T11] ( 3, 0.73) ref -> x0 single-def "argument with side effect" +; V28 cse0 [V28,T15] ( 3, 0.34) long -> x24 "CSE - conservative" +; V29 cse1 [V29,T03] ( 2, 8.66) byref -> x22 hoist "CSE - aggressive" +; V30 cse2 [V30,T10] ( 6, 2.54) ref -> x1 multi-def "CSE - moderate"
; ; Lcl frame size = 0 @@ -44,36 +50,18 @@ G_M44091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x21, x22, [sp, #0x20] stp x23, x24, [sp, #0x30] mov fp, sp
- mov x19, x0 - ; gcrRegs +[x19]
+ mov x20, x0 + ; gcrRegs +[x20]
mov w21, w1
- mov w20, w2
+ mov w19, w2
mov w23, w3 mov x22, x4 ; gcrRegs +[x22] ;; size=40 bbWeight=1 PerfScore 7.00
-G_M44091_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - cbz x19, G_M44091_IG06
+G_M44091_IG02: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x20, G_M44091_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M44091_IG03: ; bbWeight=0.14, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - eor w20, w20, #2 - and w0, w20, w21 - cmp w0, w21 - beq G_M44091_IG16 - ;; size=16 bbWeight=0.14 PerfScore 0.36 -G_M44091_IG04: ; bbWeight=8.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19 x22] - mov w0, wzr - ;; size=4 bbWeight=8.14 PerfScore 4.07 -G_M44091_IG05: ; bbWeight=8.14, 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=8.14 PerfScore 40.71 -G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19 x22]
+G_M44091_IG03: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -86,149 +74,24 @@ G_M44091_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=480 blr x2 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M44091_IG03 - ;; size=40 bbWeight=0.00 PerfScore 0.01 -G_M44091_IG07: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs -[x19] - ; byrRegs +[x21] - tbz w20, #18, G_M44091_IG08 - ldr w0, [x22, #0x08] - cmp w0, w24 - bhs G_M44091_IG15 - ldr x0, [x21, w0, UXTW #3] - ; gcrRegs +[x0] - ldr x1, [x0] - ldr x1, [x1, #0x48] - ldr x1, [x1, #0x20] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - tbnz w0, #4, G_M44091_IG13 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M44091_IG08: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cbz w24, G_M44091_IG04 - ldr w0, [x22, #0x08] - sub w1, w24, #1 - cmp w0, w1 - blt G_M44091_IG04 - sub w0, w24, #1 - ldr x20, [x21, w0, UXTW #3] - ; gcrRegs +[x20]
+ ;; size=36 bbWeight=0.80 PerfScore 6.00 +G_M44091_IG04: ; bbWeight=1.00, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + eor w19, w19, #2 + and w0, w21, w19 + cmp w21, w0 + bne G_M44091_IG11 + ;; size=16 bbWeight=1.00 PerfScore 2.50 +G_M44091_IG05: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + tst w23, #3 + beq G_M44091_IG30 + ;; size=8 bbWeight=0.80 PerfScore 1.20 +G_M44091_IG06: ; bbWeight=0.72, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz + cbz x22, G_M44091_IG14 + ;; size=4 bbWeight=0.72 PerfScore 0.72 +G_M44091_IG07: ; bbWeight=0.57, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0] ldr x1, [x20]
- ldr x1, [x1, #0x48] - ldr x1, [x1, #0x38] - blr x1 - ; gcrRegs -[x22] - ; byrRegs -[x21] - ; gcr arg pop 0 - ldr x1, [x0] - ldr x1, [x1, #0x60] - ldr x1, [x1, #0x10] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - mov x0, x20 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - mov w2, wzr - ldr x3, [x20] - ldr x3, [x3, #0x50] - ldr x3, [x3, #0x20] - blr x3 - ; gcrRegs -[x0 x20] - ; gcr arg pop 0 - cbnz w0, G_M44091_IG13 - b G_M44091_IG04 - ;; size=112 bbWeight=0 PerfScore 0.00 -G_M44091_IG09: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ; gcrRegs +[x22] - ; byrRegs +[x21] - tbz w20, #16, G_M44091_IG13 - tbnz w20, #8, G_M44091_IG13 - mov w19, wzr - b G_M44091_IG12 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M44091_IG10: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - ldr w1, [x22, #0x08] - cmp w19, w1 - bhs G_M44091_IG15 - add x1, x22, #16 - ; byrRegs +[x1] - ldr x0, [x1, w19, UXTW #3] - ; gcrRegs +[x0] - cbz x0, G_M44091_IG11 - ldr x1, [x21, w19, UXTW #3] - ; gcrRegs +[x1] - ; byrRegs -[x1] - movz x2, #0xD1FFAB1E // code for System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - cbz w0, G_M44091_IG04 - ;; size=52 bbWeight=0 PerfScore 0.00 -G_M44091_IG11: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref - add w19, w19, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG12: ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, byref, isz - cmp w19, w24 - blt G_M44091_IG10 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M44091_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - ; byrRegs -[x21] - mov w0, #1 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG14: ; bbWeight=0, 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 PerfScore 0.00 -G_M44091_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M44091_IG16: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19 x22] - tst w23, #3 - bne G_M44091_IG18 - tbz w23, #1, G_M44091_IG17 - mov x0, x19 - ; gcrRegs +[x0] - ldr x1, [x19] - ldr x1, [x1, #0x60] - ldr x1, [x1] - blr x1
...

libraries_tests.run.windows.arm64.Release.mch

-36 (-4.11%) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)

@@ -5,14 +5,14 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 90464
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 90464
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 17, 12.75) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
+; V00 this [V00,T00] ( 17, 12.76) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85>
; V01 loc0 [V01,T27] ( 4, 2.02) ubyte -> x1 ; V02 loc1 [V02,T18] ( 3, 3.00) int -> x1 single-def
-; V03 loc2 [V03,T09] ( 6, 5.68) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
+; V03 loc2 [V03,T09] ( 6, 5.69) ref -> x19 class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection> ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle> ; V06 loc5 [V06 ] ( 12, 10.83) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition> @@ -24,11 +24,11 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.37) ref -> x22 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.37) ref -> x21 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition> ; V17 tmp10 [V17,T12] ( 3, 3.12) int -> x1 "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.11) int -> x22 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.11) int -> x21 "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.43) byref -> x1 "impAppendStmt" ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,9 +48,9 @@ ; V36 tmp29 [V36,T22] ( 2, 2.03) int -> x2 "Inline stloc first use temp" ; V37 tmp30 [V37,T20] ( 3, 2.03) int -> x1 "Inline return value spill temp" ;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.09) byref -> x22 "Inlining Arg" -; V40 tmp33 [V40,T08] ( 5, 6.09) int -> x19 "Inlining Arg" -; V41 tmp34 [V41,T19] ( 3, 2.39) int -> x23 "Inline stloc first use temp"
+; V39 tmp32 [V39,T07] ( 5, 6.09) byref -> x3 "Inlining Arg" +; V40 tmp33 [V40,T08] ( 5, 6.09) int -> x2 "Inlining Arg" +; V41 tmp34 [V41,T19] ( 3, 2.39) int -> x1 "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -61,18 +61,18 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.50) byref -> x20 "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.50) byref -> x1 "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> x0 "field V04._lastRowId (fldOffset=0x0)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP ; V55 tmp48 [V55 ] ( 6, 4.13) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP ; V56 tmp49 [V56 ] ( 7, 6.70) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP
-; V57 tmp50 [V57,T23] ( 2, 2.03) int -> x21 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
+; V57 tmp50 [V57,T23] ( 2, 2.03) int -> x20 "field V08.TypeDef (fldOffset=0x0)" P-INDEP
; V58 tmp51 [V58,T24] ( 2, 2.03) int -> x1 "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP ;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ; V60 tmp53 [V60,T31] ( 2, 0.00) int -> x0 single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.14) int -> x21 "field V14._rowId (fldOffset=0x0)" P-INDEP -; V63 tmp56 [V63,T13] ( 2, 3.12) ref -> x22 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.14) int -> x20 "field V14._rowId (fldOffset=0x0)" P-INDEP +; V63 tmp56 [V63,T13] ( 2, 3.12) ref -> x21 "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.12) int -> x1 "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP ;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP ;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP @@ -86,39 +86,162 @@ ;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP ; V75 tmp68 [V75,T34] ( 2, 0 ) int -> x2 "field V50._rowId (fldOffset=0x0)" P-INDEP ; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V77 cse0 [V77,T10] ( 3, 4.69) int -> x1 "CSE - aggressive"
+; V77 cse0 [V77,T10] ( 3, 4.69) int -> x2 "CSE - aggressive"
; ; Lcl frame size = 40 G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x38]
- stp x21, x22, [sp, #0x48] - str x23, [sp, #0x58]
+ str x21, [sp, #0x48]
mov fp, sp stp xzr, xzr, [fp, #0x20] // [V06 loc5], [V06 loc5+0x08]
- add x1, sp, #96
+ add x1, sp, #80
str x1, [fp, #0x30] // [V76 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- ;; size=36 bbWeight=1 PerfScore 8.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x0] ldr w1, [x0, #0x10] ldr x19, [x0, #0x08] ; gcrRegs +[x19]
- cbz w1, G_M11515_IG05
+ cbz w1, G_M11515_IG14
;; size=12 bbWeight=1 PerfScore 7.00 G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz cmp w1, #1
- bne G_M11515_IG28
+ bne G_M11515_IG18
;; size=8 bbWeight=1.00 PerfScore 1.50 G_M11515_IG04: ; bbWeight=1.02, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref movn w1, #2 str w1, [x0, #0x10]
- b G_M11515_IG07 - ;; size=12 bbWeight=1.02 PerfScore 2.54 -G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1.02 PerfScore 1.52 +G_M11515_IG05: ; bbWeight=1.56, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + add x1, x0, #36 + ; byrRegs +[x1] + ldp w3, w2, [x1] + cmp w2, w3 + bge G_M11515_IG15 + add w2, w2, #1 + str w2, [x1, #0x04] + ldr w1, [x0, #0x28] + ; byrRegs -[x1] + and w20, w1, #0xD1FFAB1E + ldr x1, [x19, #0x18] + ; gcrRegs +[x1] + cbz x1, G_M11515_IG16 + ;; size=40 bbWeight=1.56 PerfScore 21.88 +G_M11515_IG06: ; bbWeight=1.56, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0-x1] + ldrb w1, [x19, #0x6C] + cbnz w1, G_M11515_IG21 + ldr x21, [x19, #0x18] + ; gcrRegs +[x21] + ldr w1, [x21, #0x50] + cbnz w1, G_M11515_IG19 + sxtw w1, w20 + ;; size=24 bbWeight=1.56 PerfScore 17.95 +G_M11515_IG07: ; bbWeight=1.56, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + str x21, [fp, #0x20] // [V55 tmp48] + str w1, [fp, #0x28] // [V56 tmp49] + ldr x0, [fp, #0x18] // [V00 this] + ; gcrRegs +[x0] + ldrb w1, [x0, #0x18] + cbz w1, G_M11515_IG10 + ;; size=20 bbWeight=1.56 PerfScore 12.49 +G_M11515_IG08: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG20 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w1, [x1, #0x08] + ; byrRegs -[x1] + add w1, w2, w1 + mov w2, w1 + add x2, x2, #4 + ldrsw x4, [x3, #0x08] + cmp x2, x4 + bhi G_M11515_IG22 + ldr x2, [x3] + sxtw x1, w1 + ldr w21, [x2, x1] + ;; size=88 bbWeight=1.55 PerfScore 48.18 +G_M11515_IG09: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x3] + tst w21, #6 + bne G_M11515_IG05 + ;; size=8 bbWeight=1.55 PerfScore 2.33 +G_M11515_IG10: ; bbWeight=1.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + ldr w1, [fp, #0x28] // [V56 tmp49] + lsr w1, w1, #24 + uxtb w1, w1 + cbnz w1, G_M11515_IG24 + ldr x1, [fp, #0x20] // [V55 tmp48] + ; gcrRegs +[x1] + add x1, x1, #0xD1FFAB1E + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr w2, [fp, #0x28] // [V56 tmp49] + and w2, w2, #0xD1FFAB1E + sub w2, w2, #1 + ldr w3, [x1, #0x20] + mul w2, w2, w3 + add x3, x1, #40 + ; byrRegs +[x3] + ldr w4, [x1, #0x10] + add w2, w2, w4 + ldrb w1, [x1, #0x07] + ; byrRegs -[x1] + cbnz w1, G_M11515_IG13 + ;; size=64 bbWeight=1.02 PerfScore 23.35 +G_M11515_IG11: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + mov w1, w2 + add x1, x1, #4 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x1, [x3] + sxtw x2, w2 + ldr w1, [x1, x2] + tst w1, #0xD1FFAB1E + bne G_M11515_IG23 + ;; size=40 bbWeight=0.80 PerfScore 10.74 +G_M11515_IG12: ; bbWeight=1.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + stp w20, w1, [x0, #0x1C] + mov w1, #1 + str w1, [x0, #0x10] + b G_M11515_IG25 + ;; size=16 bbWeight=1.02 PerfScore 3.55 +G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs +[x3] + mov w1, w2 + add x1, x1, #2 + ldrsw x4, [x3, #0x08] + cmp x1, x4 + bhi G_M11515_IG22 + ldr x3, [x3] + ; byrRegs -[x3] + sxtw x2, w2 + ldrh w1, [x3, x2] + b G_M11515_IG12 + ;; size=36 bbWeight=0.22 PerfScore 2.86 +G_M11515_IG14: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19]
movn w1, #0 str w1, [x0, #0x10] mov x0, x19 @@ -143,117 +266,16 @@ G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs +[x0] b G_M11515_IG04 ;; size=72 bbWeight=0.00 PerfScore 0.04
-G_M11515_IG06: ; bbWeight=1.55, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] - tst w22, #6 - beq G_M11515_IG14
...

-20 (-1.67%) : 386986.dasm - System.Number:FormatHalfushort:System.String (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 295488
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 295488
; 4 inlinees with PGO data; 32 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; @@ -13,7 +13,7 @@ ; V01 arg1 [V01,T01] ( 7, 4.99) struct ( 8) [fp+0x50] do-not-enreg[SF] single-def ptr <System.Half> ; V02 arg2 [V02,T03] ( 6, 4 ) struct (16) [fp+0x40] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ; V03 arg3 [V03,T02] ( 8, 4 ) ref -> x19 class-hnd single-def <System.Globalization.NumberFormatInfo>
-; V04 loc0 [V04,T00] ( 10, 7.95) ushort -> x23
+; V04 loc0 [V04,T00] ( 9, 7.95) ushort -> x23
; V05 loc1 [V05 ] ( 10, 8.00) int -> [fp+0x38] do-not-enreg[X] addr-exposed ld-addr-op ; V06 loc2 [V06,T09] ( 3, 3 ) long -> x24 ; V07 loc3 [V07 ] ( 24, 21.98) struct (32) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr <System.Number+NumberBuffer> @@ -25,7 +25,7 @@ ; V13 tmp2 [V13 ] ( 1, 1 ) struct (24) [fp+0x58] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" ; V14 tmp3 [V14,T07] ( 2, 4 ) int -> x25 "impAppendStmt" ;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Half>
-; V16 tmp5 [V16,T14] ( 4, 2 ) int -> x0
+; V16 tmp5 [V16,T14] ( 3, 2 ) int -> x0
; V17 tmp6 [V17,T17] ( 3, 1.97) int -> x0 ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V19 tmp8 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -98,7 +98,7 @@ G_M7453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} uxth w22, w0 mov w0, #0xD1FFAB1E cmp w22, w0
- bhs G_M7453_IG22
+ bhs G_M7453_IG23
ldp x0, x1, [fp, #0x40] // [V02 arg2], [V02 arg2+0x08] ; byrRegs +[x0] add x2, fp, #56 // [V05 loc1] @@ -139,7 +139,7 @@ G_M7453_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} ; byrRegs -[x0 x25] ldr w0, [fp, #0x30] // [V07 loc3+0x18] cmp w0, #0
- bls G_M7453_IG21
+ bls G_M7453_IG22
ldr x0, [fp, #0x28] // [V07 loc3+0x10] ; byrRegs +[x0] strb wzr, [x0] @@ -179,7 +179,7 @@ G_M7453_IG03: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x ;; size=4 bbWeight=0.99 PerfScore 0.99 G_M7453_IG04: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldrb w2, [fp, #0x10] // [V09 loc5]
- cbz w2, G_M7453_IG18
+ cbz w2, G_M7453_IG20
strh w21, [fp, #0x50] // [V01 arg1] add x2, fp, #24 // [V07 loc3] ldrh w0, [fp, #0x50] // [V01 arg1] @@ -189,7 +189,7 @@ G_M7453_IG04: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- cbz w0, G_M7453_IG18
+ cbz w0, G_M7453_IG20
;; size=48 bbWeight=0.99 PerfScore 14.88 G_M7453_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz add x0, fp, #24 // [V07 loc3] @@ -202,72 +202,23 @@ G_M7453_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} mov w1, w0 cmn w0, #1 ccmp w1, #5, z, ne
- blt G_M7453_IG19 - sxth w25, w21 - add x0, fp, #24 // [V07 loc3] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ldr w0, [fp, #0x18] // [V07 loc3] - cbz w0, G_M7453_IG09 - ;; size=80 bbWeight=1 PerfScore 20.00 -G_M7453_IG06: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - ldr w0, [fp, #0x1C] // [V07 loc3+0x04] - cmn w0, #8 - blt G_M7453_IG09 - cmp w0, #5 - bgt G_M7453_IG28 - add x0, fp, #24 // [V07 loc3] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - uxth w0, w0 - ;; size=48 bbWeight=1.00 PerfScore 11.50
+ bge G_M7453_IG13 + ;; size=44 bbWeight=1 PerfScore 10.50 +G_M7453_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + mov w0, #1 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M7453_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ldrb w1, [fp, #0x20] // [V07 loc3+0x08] - cbnz w1, G_M7453_IG10 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M7453_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - b G_M7453_IG11 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M7453_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov w0, wzr - b G_M7453_IG07 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M7453_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- fneg s0, s0 - movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - ;; size=44 bbWeight=0.50 PerfScore 6.50 -G_M7453_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - sxth w0, w0 - cmp w25, w0 - cset x0, eq - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - cbz w23, G_M7453_IG20 - ;; size=36 bbWeight=1 PerfScore 8.00 -G_M7453_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ cbz w23, G_M7453_IG21
ldr w0, [fp, #0x38] // [V05 loc1] cmn w0, #1
- bne G_M7453_IG15 - ;; size=12 bbWeight=1 PerfScore 3.50 -G_M7453_IG13: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ bne G_M7453_IG10 + ;; size=36 bbWeight=1 PerfScore 10.00 +G_M7453_IG08: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
mov w0, #103 mov w1, #82 cmp w23, #71 @@ -276,7 +227,7 @@ G_M7453_IG13: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x bne G_M7453_IG29 mov w0, #1 ;; size=28 bbWeight=0.98 PerfScore 3.93
-G_M7453_IG14: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M7453_IG09: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -287,7 +238,7 @@ G_M7453_IG14: ; bbWeight=0.98, gcrefRegs=80000 {x19}, byrefRegs=100000 {x cmp w1, #5 csel w24, w1, w0, ge ;; size=36 bbWeight=0.98 PerfScore 8.85
-G_M7453_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M7453_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
add x1, fp, #24 // [V07 loc3] mov x0, x20 ; byrRegs +[x0] @@ -303,7 +254,7 @@ G_M7453_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} ; gcrRegs -[x4 x19] ; byrRegs -[x0 x20] ;; size=40 bbWeight=1 PerfScore 8.00
-G_M7453_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M7453_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x0, xzr movz xip0, #0xD1FFAB1E movk xip0, #0xD1FFAB1E LSL #16 @@ -311,10 +262,10 @@ G_M7453_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk xip0, #0xD1FFAB1E LSL #48 ldr xip1, [fp, #0x70] // [V51 GsCookie] cmp xip0, xip1
- beq G_M7453_IG17
+ beq G_M7453_IG12
bl CORINFO_HELP_FAIL_FAST ;; size=36 bbWeight=1 PerfScore 7.00
-G_M7453_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7453_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[x0] ldr x25, [sp, #0xA8] ldp x23, x24, [sp, #0x98] @@ -323,9 +274,64 @@ G_M7453_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref ldp fp, lr, [sp], #0xB0 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M7453_IG18: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
+G_M7453_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref, isz
; gcrRegs -[x0] +[x19] ; byrRegs +[x20]
+ sxth w25, w21 + add x0, fp, #24 // [V07 loc3] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ldr w0, [fp, #0x18] // [V07 loc3] + cbz w0, G_M7453_IG17 + ;; size=36 bbWeight=1 PerfScore 9.50 +G_M7453_IG14: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr w0, [fp, #0x1C] // [V07 loc3+0x04] + cmn w0, #8 + blt G_M7453_IG17 + cmp w0, #5 + bgt G_M7453_IG30 + add x0, fp, #24 // [V07 loc3] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + uxth w0, w0 + ;; size=48 bbWeight=1.00 PerfScore 11.50 +G_M7453_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldrb w1, [fp, #0x20] // [V07 loc3+0x08] + cbnz w1, G_M7453_IG18 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M7453_IG16: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + b G_M7453_IG19 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M7453_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + mov w0, wzr + b G_M7453_IG15 + ;; size=8 bbWeight=0.00 PerfScore 0.00 +G_M7453_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + fneg s0, s0 + movz x0, #0xD1FFAB1E // code for <unknown method> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + ;; size=44 bbWeight=0.50 PerfScore 6.50 +G_M7453_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + sxth w0, w0 + cmp w25, w0 + cset x0, eq + b G_M7453_IG07 + ;; size=16 bbWeight=1 PerfScore 2.50 +G_M7453_IG20: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
strh w21, [fp, #0x50] // [V01 arg1] ldrb w2, [fp, #0x10] // [V09 loc5] ...

-8 (-1.52%) : 504831.dasm - Xunit.Assert:InRangeint (Tier1)

@@ -17,9 +17,9 @@ ; V05 tmp1 [V05,T16] ( 3, 0 ) ref -> x20 class-hnd exact single-def "Single-def Box Helper" <System.Int32> ; V06 tmp2 [V06,T17] ( 3, 0 ) ref -> x19 class-hnd exact single-def "Single-def Box Helper" <System.Int32> ; V07 tmp3 [V07,T18] ( 3, 0 ) ref -> x2 class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V08 tmp4 [V08,T11] ( 3, 2 ) int -> x1 "guarded devirt return temp"
+; V08 tmp4 [V08,T10] ( 3, 2 ) int -> x1 "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.AssertRangeComparer`1[int]>
-; V10 tmp6 [V10,T10] ( 4, 2 ) int -> x1 "guarded devirt return temp"
+; V10 tmp6 [V10,T11] ( 3, 2 ) int -> x1 "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Xunit.Sdk.AssertRangeComparer`1[int]> ; V12 tmp8 [V12,T19] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V13 tmp9 [V13 ] ( 2, 4 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg" @@ -58,13 +58,13 @@ G_M47302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] ;; size=36 bbWeight=1 PerfScore 6.50 G_M47302_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M47302_IG10
+ cbz x20, G_M47302_IG11
ldr x23, [x20] movz x24, #0xD1FFAB1E movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 cmp x23, x24
- bne G_M47302_IG11
+ bne G_M47302_IG13
str w22, [fp, #0x18] // [V13 tmp9] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -78,25 +78,17 @@ G_M47302_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; byrRegs +[x0] ldr w1, [x0] cmp w1, w19
- bge G_M47302_IG04
+ bge G_M47302_IG08
;; size=72 bbWeight=1 PerfScore 18.50 G_M47302_IG03: ; bbWeight=0.90, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; byrRegs -[x0] movn w1, #0
- b G_M47302_IG05 - ;; size=8 bbWeight=0.90 PerfScore 1.35 -G_M47302_IG04: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref - ; byrRegs +[x0] - ldr w1, [x0] - cmp w1, w19 - cset x1, gt - ;; size=12 bbWeight=0.10 PerfScore 0.40 -G_M47302_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x0]
+ ;; size=4 bbWeight=0.90 PerfScore 0.45 +G_M47302_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
cmp w1, #0
- bgt G_M47302_IG13
+ bgt G_M47302_IG12
cmp x23, x24
- bne G_M47302_IG12
+ bne G_M47302_IG10
str w19, [fp, #0x10] // [V21 tmp17] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -110,32 +102,55 @@ G_M47302_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; byrRegs +[x0] ldr w1, [x0] cmp w1, w21
- bge G_M47302_IG07
+ bge G_M47302_IG09
;; size=60 bbWeight=1 PerfScore 14.50
-G_M47302_IG06: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47302_IG05: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0] movn w1, #0
- b G_M47302_IG08 - ;; size=8 bbWeight=0.90 PerfScore 1.35 -G_M47302_IG07: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref - ; byrRegs +[x0] - ldr w1, [x0] - cmp w1, w21 - cset x1, gt - ;; size=12 bbWeight=0.10 PerfScore 0.40 -G_M47302_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x0]
+ ;; size=4 bbWeight=0.90 PerfScore 0.45 +G_M47302_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w1, #0
- bgt G_M47302_IG13
+ bgt G_M47302_IG12
;; size=8 bbWeight=1 PerfScore 1.50
-G_M47302_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M47302_IG07: ; bbWeight=1, epilog, nogc, extend
ldp x23, x24, [sp, #0x40] ldp x21, x22, [sp, #0x30] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x50 ret lr ;; size=20 bbWeight=1 PerfScore 5.00
-G_M47302_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M47302_IG08: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x20] + ; byrRegs +[x0] + ldr w1, [x0] + cmp w1, w19 + cset x1, gt + b G_M47302_IG04 + ;; size=16 bbWeight=0.10 PerfScore 0.50 +G_M47302_IG09: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + ; gcrRegs -[x20] + ldr w1, [x0] + cmp w1, w21 + cset x1, gt + b G_M47302_IG06 + ;; size=16 bbWeight=0.10 PerfScore 0.50 +G_M47302_IG10: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20] + ; byrRegs -[x0] + mov x0, x20 + ; gcrRegs +[x0] + mov w2, w21 + mov w1, w19 + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x3, [x11] + blr x3 + ; gcrRegs -[x0 x20] + sxtw w1, w0 + b G_M47302_IG06 + ;; size=40 bbWeight=0 PerfScore 0.00 +G_M47302_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -170,37 +185,7 @@ G_M47302_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_THROW ; gcrRegs -[x0 x20] ;; size=100 bbWeight=0 PerfScore 0.00
-G_M47302_IG11: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - mov x0, x20 - ; gcrRegs +[x0] - mov w2, w19 - mov w1, w22 - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x3, [x11] - blr x3 - ; gcrRegs -[x0] - sxtw w1, w0 - b G_M47302_IG05 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M47302_IG12: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - mov x0, x20 - ; gcrRegs +[x0] - mov w2, w21 - mov w1, w19 - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x3, [x11] - blr x3 - ; gcrRegs -[x0 x20] - sxtw w1, w0 - cmp w1, #0 - ble G_M47302_IG09 - ;; size=44 bbWeight=0 PerfScore 0.00 -G_M47302_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M47302_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -238,10 +223,24 @@ G_M47302_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x1-x2 x19-x20] bl CORINFO_HELP_THROW ; gcrRegs -[x0]
- brk_windows #0 - ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=104 bbWeight=0 PerfScore 0.00 +G_M47302_IG13: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20] + mov x0, x20 + ; gcrRegs +[x0] + mov w2, w19 + mov w1, w22 + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x3, [x11] + blr x3 + ; gcrRegs -[x0] + sxtw w1, w0 + b G_M47302_IG04 + ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 528, prolog size 20, PerfScore 49.50, instruction count 132, allocated bytes for code 528 (MethodHash=d70f4739) for method Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
+; Total bytes of code 520, prolog size 20, PerfScore 47.90, instruction count 130, allocated bytes for code 520 (MethodHash=d70f4739) for method Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
; ============================================================ Unwind Info: @@ -252,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 132 (0x00084) Actual length = 528 (0x000210)
+ Function Length : 130 (0x00082) Actual length = 520 (0x000208)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.84%) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)

@@ -14,14 +14,14 @@ ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]> ;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T18] ( 3, 0 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T18] ( 3, 0 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp5 [V09,T02] ( 7, 6.00) int -> x21 "Inline stloc first use temp"
+; V09 tmp5 [V09,T03] ( 7, 6.00) int -> x21 "Inline stloc first use temp"
;* V10 tmp6 [V10,T15] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp8 [V12,T03] ( 8, 6.01) int -> x0 "Inline stloc first use temp"
+; V12 tmp8 [V12,T02] ( 10, 6.01) int -> x0 "Inline stloc first use temp"
; V13 tmp9 [V13,T08] ( 9, 3.01) int -> x1 "Inline stloc first use temp" ; V14 tmp10 [V14,T16] ( 4, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Runtime.ExceptionServices.ExceptionDispatchInfo> ; V15 tmp11 [V15,T05] ( 3, 6 ) ref -> x1 class-hnd exact single-def "dup spill" <<unknown class>> @@ -34,22 +34,22 @@ ; V22 tmp18 [V22,T17] ( 2, 1 ) int -> x0 ;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp21 [V25,T13] ( 3, 2 ) int -> x20 -; V26 tmp22 [V26,T14] ( 3, 2 ) ubyte -> x20 "Inline return value spill temp"
+; V25 tmp21 [V25,T13] ( 3, 2 ) int -> x21 +; V26 tmp22 [V26,T14] ( 3, 2 ) ubyte -> x21 "Inline return value spill temp"
; V27 tmp23 [V27,T09] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder> ;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]> ; V32 tmp28 [V32,T01] ( 4, 8 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Threading.Tasks.TaskExceptionHolder>
-; V33 tmp29 [V33,T07] ( 5, 4 ) ref -> x21 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
+; V33 tmp29 [V33,T07] ( 5, 4 ) ref -> x22 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]>
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V37 tmp33 [V37,T19] ( 3, 0 ) ref -> x0 single-def "arr expr"
-; V38 cse0 [V38,T04] ( 6, 6 ) byref -> x20 "CSE - aggressive"
+; V38 cse0 [V38,T04] ( 7, 6 ) byref -> x20 "CSE - aggressive"
; V39 cse1 [V39,T10] ( 3, 3 ) byref -> x0 "CSE - aggressive"
-; V40 cse2 [V40,T11] ( 3, 3 ) byref -> x22 "CSE - aggressive"
+; V40 cse2 [V40,T11] ( 3, 3 ) byref -> x21 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -82,27 +82,31 @@ G_M30140_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ;; size=64 bbWeight=1 PerfScore 14.00 G_M30140_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz ldapr w21, [x20]
- tbnz w21, #21, G_M30140_IG11
+ tbnz w21, #21, G_M30140_IG12
;; size=8 bbWeight=1 PerfScore 4.00 G_M30140_IG04: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #22, G_M30140_IG11
+ tbnz w21, #22, G_M30140_IG12
;; size=4 bbWeight=1.01 PerfScore 1.01 G_M30140_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #24, G_M30140_IG10
+ tbnz w21, #24, G_M30140_IG11
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M30140_IG06: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #23, G_M30140_IG11
+ tbnz w21, #23, G_M30140_IG12
;; size=4 bbWeight=0.99 PerfScore 0.99 G_M30140_IG07: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #17, G_M30140_IG11
+ tbnz w21, #17, G_M30140_IG12
;; size=4 bbWeight=0.99 PerfScore 0.99 G_M30140_IG08: ; bbWeight=0.02, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbnz w21, #16, G_M30140_IG11
+ tbz w21, #16, G_M30140_IG12
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M30140_IG09: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - b G_M30140_IG11 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M30140_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M30140_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldapr w0, [x20] + tbz w0, #21, G_M30140_IG13 + ;; size=8 bbWeight=0.00 PerfScore 0.01 +G_M30140_IG10: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + b G_M30140_IG37 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M30140_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -115,65 +119,44 @@ G_M30140_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 ldr x2, [x2] blr x2 ;; size=44 bbWeight=1 PerfScore 8.50
-G_M30140_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M30140_IG12: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldapr w0, [x20]
- tbnz w0, #21, G_M30140_IG20 - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M30140_IG12: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - tbnz w0, #22, G_M30140_IG19
+ tbnz w0, #21, G_M30140_IG37 + ;; size=8 bbWeight=1.00 PerfScore 3.99 +G_M30140_IG13: ; bbWeight=1.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + tbnz w0, #22, G_M30140_IG33
;; size=4 bbWeight=1.01 PerfScore 1.01
-G_M30140_IG13: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - tbnz w0, #24, G_M30140_IG18
+G_M30140_IG14: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + tbnz w0, #24, G_M30140_IG32
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M30140_IG14: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - tbnz w0, #23, G_M30140_IG17 - ;; size=4 bbWeight=0.99 PerfScore 0.99
G_M30140_IG15: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- tbz w0, #17, G_M30140_IG35
+ tbnz w0, #23, G_M30140_IG25
;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M30140_IG16: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M30140_IG16: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + tbz w0, #17, G_M30140_IG34 + ;; size=4 bbWeight=0.99 PerfScore 0.99 +G_M30140_IG17: ; bbWeight=0.97, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov w1, #3
- b G_M30140_IG22 - ;; size=8 bbWeight=0.97 PerfScore 1.46 -G_M30140_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov w1, #4 - b G_M30140_IG22 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M30140_IG18: ; bbWeight=0.02, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov w1, #5 - b G_M30140_IG22 - ;; size=8 bbWeight=0.02 PerfScore 0.03 -G_M30140_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov w1, #6 - b G_M30140_IG22 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M30140_IG20: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - mov w1, #7 - b G_M30140_IG22 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M30140_IG21: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - tst w0, #0xD1FFAB1E - cset x1, ne - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M30140_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+ ;; size=4 bbWeight=0.97 PerfScore 0.49 +G_M30140_IG18: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
cmp w1, #6
- beq G_M30140_IG29
+ beq G_M30140_IG26
cmp w1, #7
- bne G_M30140_IG37
+ bne G_M30140_IG38
ldapr w0, [x20]
- tbz w0, #21, G_M30140_IG41
+ tbz w0, #21, G_M30140_IG42
add x0, x19, #40 ; byrRegs +[x0] ldapr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0]
- cbz x0, G_M30140_IG40
+ cbz x0, G_M30140_IG41
add x0, x0, #24 ; gcrRegs -[x0] ; byrRegs +[x0] ldapr x1, [x0] ; gcrRegs +[x1]
- cbz x1, G_M30140_IG40
+ cbz x1, G_M30140_IG41
ldapr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0] @@ -184,13 +167,13 @@ G_M30140_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 ; gcrRegs +[x0] ; byrRegs -[x0] cmp x0, #0
- cset x20, ne - ; byrRegs -[x20]
+ cset x21, ne
;; size=68 bbWeight=1 PerfScore 23.50
-G_M30140_IG23: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30140_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- tst w20, #255 - bne G_M30140_IG24
+ ; byrRegs -[x20] + tst w21, #255 + bne G_M30140_IG20
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -203,7 +186,7 @@ G_M30140_IG23: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 ;; size=52 bbWeight=1 PerfScore 10.00
-G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M30140_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x28] ; gcrRegs +[x0] add x0, x0, #24 @@ -212,9 +195,9 @@ G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldapr x20, [x0] ; gcrRegs +[x20] add x0, x20, #16
- ldapr x21, [x0] - ; gcrRegs +[x21] - cbnz x21, G_M30140_IG25
+ ldapr x22, [x0] + ; gcrRegs +[x22] + cbnz x22, G_M30140_IG21
movz x0, #0xD1FFAB1E ; byrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -228,10 +211,10 @@ G_M30140_IG24: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr x2, [x2] blr x2 ;; size=68 bbWeight=1 PerfScore 19.50
-G_M30140_IG25: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr w0, [x21, #0x10]
+G_M30140_IG21: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ldr w0, [x22, #0x10]
cmp w0, #0
- bgt G_M30140_IG26
+ bgt G_M30140_IG22
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -244,35 +227,39 @@ G_M30140_IG25: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldr x2, [x2] blr x2 ;; size=56 bbWeight=1 PerfScore 13.00
-G_M30140_IG26: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - add x22, x20, #32 - ; byrRegs +[x22] - ldaprb w0, [x22] - cbnz w0, G_M30140_IG27
+G_M30140_IG22: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + add x21, x20, #32 + ; byrRegs +[x21] + ldaprb w0, [x21] + cbnz w0, G_M30140_IG23
mov x0, x20 ; gcrRegs +[x0] bl <unknown method> ; gcrRegs -[x0 x20] mov w0, #1
- stlrb w0, [x22]
+ stlrb w0, [x21]
;; size=28 bbWeight=1 PerfScore 7.50 ...

+8 (+1.69%) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap2+ArrayBasedLinkedQueue1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair2[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)

@@ -5,11 +5,11 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6859
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6859
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
+; V00 this [V00,T00] ( 14, 7.99) ref -> x19 this class-hnd single-def <System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]> ; V02 loc0 [V02,T08] ( 6, 4 ) int -> x20 ; V03 loc1 [V03 ] ( 5, 1.98) struct (24) [fp+0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]> @@ -80,7 +80,7 @@ G_M42120_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, ; gcrRegs +[x1] ldr w14, [x19, #0x18] cmn w14, #1
- beq G_M42120_IG09
+ beq G_M42120_IG10
;; size=12 bbWeight=1 PerfScore 4.50 G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz sxtw w20, w14 @@ -90,11 +90,11 @@ G_M42120_IG03: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 ; gcrRegs +[x15] ldr w12, [x15, #0x10] cmp w14, w12
- bhs G_M42120_IG12
+ bhs G_M42120_IG13
ldr x15, [x15, #0x08] ldr w12, [x15, #0x08] cmp w14, w12
- bhs G_M42120_IG11
+ bhs G_M42120_IG12
mov w12, #24 mov xip0, #16 umaddl x14, w14, w12, xip0 @@ -126,25 +126,27 @@ G_M42120_IG05: ; bbWeight=0.99, extend add w2, w1, #1 str w2, [x0, #0x14] ;; size=48 bbWeight=0.99 PerfScore 14.84
-G_M42120_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M42120_IG06: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x3] ldr w0, [x19, #0x10] cmn w0, #1
- bne G_M42120_IG10 - str w20, [x19, #0x10] - ;; size=16 bbWeight=1 PerfScore 5.50
+ bne G_M42120_IG11 + ;; size=12 bbWeight=0.99 PerfScore 4.45
G_M42120_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ str w20, [x19, #0x10] + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42120_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
str w20, [x19, #0x14] mov w0, w20 ;; size=8 bbWeight=1 PerfScore 1.50
-G_M42120_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M42120_IG09: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60] ldp fp, lr, [sp], #0x80 ret lr ;; size=16 bbWeight=1 PerfScore 4.00
-G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M42120_IG10: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x1] ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -160,7 +162,7 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs +[x22] ldr w1, [x22, #0x08] cmp w1, w21
- bhi G_M42120_IG13
+ bhi G_M42120_IG14
add x1, fp, #24 // [V24 tmp20] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -168,9 +170,11 @@ G_M42120_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=800 ldr x2, [x2] blr x2 ; gcrRegs -[x0 x22]
- b G_M42120_IG06 - ;; size=76 bbWeight=0.01 PerfScore 0.30 -G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr w0, [x19, #0x10] + cmn w0, #1 + beq G_M42120_IG07 + ;; size=84 bbWeight=0.01 PerfScore 0.33 +G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x21, [x19, #0x08] ; gcrRegs +[x21] ldr w22, [x19, #0x14] @@ -203,12 +207,12 @@ G_M42120_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x3 ; gcrRegs -[x0 x21]
- b G_M42120_IG07
+ b G_M42120_IG08
;; size=104 bbWeight=0 PerfScore 0.00
-G_M42120_IG11: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ;; size=4 bbWeight=0 PerfScore 0.00
-G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M42120_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -216,7 +220,7 @@ G_M42120_IG12: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blr x0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
+G_M42120_IG14: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x0 x22] add w14, w21, #1 str w14, [x0, #0x10] @@ -236,7 +240,7 @@ G_M42120_IG13: ; bbWeight=0, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=000 b G_M42120_IG06 ;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 472, prolog size 36, PerfScore 69.80, instruction count 118, allocated bytes for code 472 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
+; Total bytes of code 480, prolog size 36, PerfScore 69.78, instruction count 120, allocated bytes for code 480 (MethodHash=31685b77) for method System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
; ============================================================ Unwind Info: @@ -247,7 +251,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 472 (0x0001d8)
+ Function Length : 120 (0x00078) Actual length = 480 (0x0001e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+2.10%) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)

@@ -5,15 +5,15 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7747
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7747
; 13 inlinees with PGO data; 42 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 46, 27.17) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V00 this [V00,T00] ( 47, 27.17) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
; V01 arg1 [V01,T05] ( 5, 5 ) byref -> x20 single-def
-; V02 arg2 [V02 ] ( 10, 4 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]>
+; V02 arg2 [V02 ] ( 10, 4 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]>
; V03 arg3 [V03,T11] ( 4, 3 ) byref -> x21 single-def
-; V04 loc0 [V04,T41] ( 3, 0 ) ref -> x20 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OmittedTypeArgumentSyntax>
+; V04 loc0 [V04,T41] ( 3, 0 ) ref -> x27 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OmittedTypeArgumentSyntax>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V06 tmp1 [V06,T15] ( 2, 4 ) int -> x23 "impAppendStmt" ;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax]> @@ -27,30 +27,30 @@ ; V15 tmp10 [V15,T25] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.ArrayElement`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken]> ; V17 tmp12 [V17,T26] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V18 tmp13 [V18,T19] ( 3, 3 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V18 tmp13 [V18,T20] ( 3, 3 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V19 tmp14 [V19,T27] ( 3, 2.00) ref -> x15 "guarded devirt return temp" ; V20 tmp15 [V20,T03] ( 5, 7.22) ref -> x0 single-def "guarded devirt arg temp" ;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ; V22 tmp17 [V22,T43] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V23 tmp18 [V23,T28] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V25 tmp20 [V25,T12] ( 3, 4 ) ref -> x25 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V25 tmp20 [V25,T12] ( 3, 4 ) ref -> x24 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer> ; V28 tmp23 [V28,T23] ( 5, 2 ) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
-; V29 tmp24 [V29,T13] ( 3, 4 ) ref -> x26 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions>
+; V29 tmp24 [V29,T13] ( 3, 4 ) ref -> x25 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpParseOptions>
;* V30 tmp25 [V30 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp" ;* V31 tmp26 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String> ;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp29 [V34,T44] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V35 tmp30 [V35,T45] ( 2, 0 ) ref -> x0 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V36 tmp31 [V36,T02] ( 7, 8.00) ref -> x24 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax> -; V37 tmp32 [V37,T01] ( 10, 14.00) ref -> x27 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder>
+; V36 tmp31 [V36,T02] ( 7, 8.00) ref -> x22 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax> +; V37 tmp32 [V37,T01] ( 10, 14.00) ref -> x26 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder>
; V38 tmp33 [V38,T06] ( 3, 6.00) ref -> x14 class-hnd exact single-def "impAppendStmt" <<unknown class>> ; V39 tmp34 [V39,T16] ( 4, 4.00) int -> x15 single-def "Inline stloc first use temp" ; V40 tmp35 [V40,T42] ( 3, 0 ) int -> x20 single-def "Inline stloc first use temp"
-; V41 tmp36 [V41,T40] ( 5, 0 ) int -> x22 "Inline stloc first use temp"
+; V41 tmp36 [V41,T40] ( 5, 0 ) int -> x23 "Inline stloc first use temp"
; V42 tmp37 [V42,T22] ( 3, 2.00) int -> x1 single-def "Inline stloc first use temp" ; V43 tmp38 [V43,T21] ( 6, 2.01) int -> x2 single-def "Inline stloc first use temp" ; V44 tmp39 [V44,T38] ( 4, 0.01) int -> x2 @@ -63,12 +63,12 @@ ; V51 tmp46 [V51,T47] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V52 tmp47 [V52,T48] ( 2, 0 ) ref -> x1 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax> ; V53 tmp48 [V53,T29] ( 3, 2 ) ref -> x15 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V54 tmp49 [V54,T20] ( 3, 3 ) ref -> x28 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V54 tmp49 [V54,T19] ( 5, 3 ) ref -> x27 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V55 tmp50 [V55,T30] ( 3, 2.00) ref -> x15 "guarded devirt return temp" ; V56 tmp51 [V56,T04] ( 5, 7.22) ref -> x0 single-def "guarded devirt arg temp" ;* V57 tmp52 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ; V58 tmp53 [V58,T49] ( 2, 0 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V59 tmp54 [V59 ] ( 10, 4 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V02._builder (fldOffset=0x0)" P-DEP
+; V59 tmp54 [V59 ] ( 10, 4 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V02._builder (fldOffset=0x0)" P-DEP
;* V60 tmp55 [V60 ] ( 0, 0 ) ref -> zero-ref "field V07._builder (fldOffset=0x0)" P-INDEP ;* V61 tmp56 [V61 ] ( 0, 0 ) ref -> zero-ref "field V08._builder (fldOffset=0x0)" P-INDEP ;* V62 tmp57 [V62 ] ( 0, 0 ) ref -> zero-ref "field V10._builder (fldOffset=0x0)" P-INDEP @@ -85,20 +85,20 @@ ; V73 tmp68 [V73,T36] ( 3, 0.04) int -> x1 "index expr" ; V74 tmp69 [V74,T50] ( 2, 0 ) ref -> x1 "argument with side effect" ; V75 tmp70 [V75,T51] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V76 tmp71 [V76,T52] ( 2, 0 ) ref -> x27 single-def "argument with side effect"
+; V76 tmp71 [V76,T52] ( 2, 0 ) ref -> x26 single-def "argument with side effect"
; V77 cse0 [V77,T17] ( 4, 3.38) int -> x23 "CSE - moderate" ;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M60245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - stp x25, x26, [sp, #0x50] - stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + stp x25, x26, [sp, #0x48] + str x27, [sp, #0x58]
mov fp, sp
- str x2, [fp, #0x18] // [V02 arg2]
+ str x2, [fp, #0x10] // [V02 arg2]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 @@ -113,12 +113,12 @@ G_M60245_IG03: ; bbWeight=1.19, gcrefRegs=80000 {x19}, byrefRegs=300000 { ldp w0, w1, [x19, #0x38] add w23, w0, w22 cmp w23, w1
- bge G_M60245_IG29
+ bge G_M60245_IG30
;; size=16 bbWeight=1.19 PerfScore 5.96 G_M60245_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0]
- cbnz x0, G_M60245_IG15
+ cbnz x0, G_M60245_IG32
;; size=8 bbWeight=1 PerfScore 4.00 G_M60245_IG05: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz ; gcrRegs -[x0] @@ -127,7 +127,7 @@ G_M60245_IG05: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 { sxtw w1, w23 ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M60245_IG37
+ bhs G_M60245_IG39
ubfiz x1, x1, #3, #32 add x1, x1, #16 ldr x0, [x0, x1] @@ -137,12 +137,12 @@ G_M60245_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 { ; gcrRegs -[x0] mov w1, #0xD1FFAB1E cmp w0, w1
- beq G_M60245_IG40
+ beq G_M60245_IG41
;; size=16 bbWeight=1 PerfScore 5.00 G_M60245_IG07: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz ldr x0, [x19, #0x28] ; gcrRegs +[x0]
- cbnz x0, G_M60245_IG11
+ cbnz x0, G_M60245_IG31
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M60245_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz ; gcrRegs -[x0] @@ -152,7 +152,7 @@ G_M60245_IG08: ; bbWeight=0.99, gcrefRegs=80000 {x19}, byrefRegs=300000 { add w1, w1, w22 ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M60245_IG37
+ bhs G_M60245_IG39
ubfiz x1, x1, #3, #32 add x1, x1, #16 ldr x0, [x0, x1] @@ -177,7 +177,7 @@ G_M60245_IG09: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 { ; gcrRegs -[x0] mov w1, #0xD1FFAB1E cmp w0, w1
- bne G_M60245_IG41
+ bne G_M60245_IG42
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr x1, [x0] @@ -185,35 +185,9 @@ G_M60245_IG09: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=300000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M60245_IG12
+ beq G_M60245_IG27
;; size=88 bbWeight=1 PerfScore 25.00
-G_M60245_IG10: ; bbWeight=0.39, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref - ldr x15, [x0, #0x18] - ; gcrRegs +[x15] - b G_M60245_IG13 - ;; size=8 bbWeight=0.39 PerfScore 1.56 -G_M60245_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz - ; gcrRegs -[x0 x15 x24] - ldr x0, [x19, #0x28] - ; gcrRegs +[x0] - ldr w1, [x19, #0x38] - add w1, w1, w22 - ldr w2, [x0, #0x08] - cmp w1, w2 - bhs G_M60245_IG37 - mov w2, #96 - mov x3, #16 - umaddl x1, w1, w2, x3 - add x0, x0, x1 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr x0, [x0, #0x08] - ; gcrRegs +[x0] - ; byrRegs -[x0] - b G_M60245_IG09 - ;; size=48 bbWeight=0.01 PerfScore 0.16 -G_M60245_IG12: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref - ; gcrRegs +[x24]
+G_M60245_IG10: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs=300000 {x20 x21}, byref
ldr x1, [x0] ldr x1, [x1, #0x68] ldr x1, [x1, #0x28] @@ -222,7 +196,7 @@ G_M60245_IG12: ; bbWeight=0.61, gcrefRegs=1080001 {x0 x19 x24}, byrefRegs mov x15, x0 ; gcrRegs +[x15] ;; size=20 bbWeight=0.61 PerfScore 6.40
-G_M60245_IG13: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M60245_IG11: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefRegs=300000 {x20 x21}, byref, isz
; gcrRegs -[x0] add x14, x19, #32 ; byrRegs +[x14] @@ -232,60 +206,30 @@ G_M60245_IG13: ; bbWeight=1.00, gcrefRegs=1088000 {x15 x19 x24}, byrefReg str xzr, [x19, #0x10] ldr x14, [x19, #0x28] ; gcrRegs +[x14]
- cbz x14, G_M60245_IG17
+ cbnz x14, G_M60245_IG28
;; size=20 bbWeight=1.00 PerfScore 6.50
-G_M60245_IG14: ; bbWeight=0.30, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
+G_M60245_IG12: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
; gcrRegs -[x14]
- b G_M60245_IG16 - ;; size=4 bbWeight=0.30 PerfScore 0.30 -G_M60245_IG15: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz - ; gcrRegs -[x24] - ldr x0, [x19, #0x28] - ; gcrRegs +[x0] - ldr w1, [x0, #0x08] - cmp w23, w1 - bhs G_M60245_IG37 - mov w1, #96 - mov x2, #16 - umaddl x1, w23, w1, x2 - add x0, x0, x1 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr x0, [x0, #0x08] - ; gcrRegs +[x0] - ; byrRegs -[x0] - b G_M60245_IG06 - ;; size=40 bbWeight=0.01 PerfScore 0.13 -G_M60245_IG16: ; bbWeight=0.30, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref - ; gcrRegs -[x0] +[x24] - stp xzr, xzr, [x19, #0xA8] - stp xzr, xzr, [x19, #0xB8] - stp xzr, xzr, [x19, #0xC8] - stp xzr, xzr, [x19, #0xD8] - stp xzr, xzr, [x19, #0xE8] - stp xzr, xzr, [x19, #0xF8] - ;; size=24 bbWeight=0.30 PerfScore 1.80 -G_M60245_IG17: ; bbWeight=1, gcrefRegs=1080000 {x19 x24}, byrefRegs=300000 {x20 x21}, byref
ldr w14, [x19, #0x38] add w14, w14, #1 str w14, [x19, #0x38] mov x15, x24 ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 35 13 0 22 -152 +0
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 83 41 12 30 -824 +140
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.arm64.Release.mch 146 36 14 96 -224 +132
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
264 90 26 148 -1,200 +272

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,446 4 24,442 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,121 48,079 48,042 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,360 36,713 12,647 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 595,378 362,592 232,786 1 (0.00%) 26 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 244,149 15 244,134 3 (0.00%) 3 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,575 6 305,569 3 (0.00%) 3 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 651,606 469,431 182,175 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,077 21,598 295,479 0 (0.00%) 0 (0.00%)
realworld.run.windows.arm64.checked.mch 33,211 3 33,208 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,160 8 24,152 2 (0.01%) 2 (0.01%)
2,341,083 938,449 1,402,634 9 (0.00%) 34 (0.00%)

jit-analyze output

benchmarks.run_pgo.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45573052 (overridden on cmd)
Total bytes of diff: 45572900 (overridden on cmd)
Total bytes of delta: -152 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -16 : 51218.dasm (-3.77 % of base)
         -16 : 66198.dasm (-3.77 % of base)
         -16 : 38757.dasm (-3.77 % of base)
         -16 : 66291.dasm (-3.77 % of base)
         -16 : 73390.dasm (-3.77 % of base)
         -16 : 89852.dasm (-3.77 % of base)
         -16 : 71937.dasm (-3.77 % of base)
         -16 : 91985.dasm (-3.77 % of base)
          -8 : 50201.dasm (-0.73 % of base)
          -4 : 48459.dasm (-0.94 % of base)
          -4 : 51172.dasm (-0.94 % of base)
          -4 : 50202.dasm (-0.41 % of base)
          -4 : 64089.dasm (-2.50 % of base)

13 total files with Code Size differences (13 improved, 0 regressed), 22 unchanged.

Top method improvements (bytes):
         -16 (-3.77 % of base) : 51218.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 66198.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 38757.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 66291.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 73390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 89852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 71937.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 91985.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -8 (-0.73 % of base) : 50201.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
          -4 (-2.50 % of base) : 64089.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -4 (-0.94 % of base) : 48459.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-0.94 % of base) : 51172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-0.41 % of base) : 50202.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)

Top method improvements (percentages):
         -16 (-3.77 % of base) : 51218.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 66198.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 38757.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 66291.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 73390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 89852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 71937.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 91985.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-2.50 % of base) : 64089.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -4 (-0.94 % of base) : 48459.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-0.94 % of base) : 51172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -8 (-0.73 % of base) : 50201.dasm - System.Reflection.Emit.SignatureHelper:GetSignature(ubyte):ubyte[]:this (Tier1)
          -4 (-0.41 % of base) : 50202.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)

13 total methods with Code Size differences (13 improved, 0 regressed).


coreclr_tests.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 495271268 (overridden on cmd)
Total bytes of diff: 495270584 (overridden on cmd)
Total bytes of delta: -684 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          32 : 250290.dasm (5.59 % of base)
          20 : 250197.dasm (2.84 % of base)
          16 : 250237.dasm (5.56 % of base)
          16 : 250324.dasm (3.39 % of base)
          12 : 250194.dasm (4.35 % of base)
           8 : 250217.dasm (2.44 % of base)
           8 : 250234.dasm (2.47 % of base)
           8 : 586569.dasm (0.88 % of base)
           8 : 591375.dasm (0.88 % of base)
           4 : 250328.dasm (1.35 % of base)
           4 : 250229.dasm (1.30 % of base)
           4 : 250285.dasm (2.86 % of base)

Top file improvements (bytes):
        -176 : 250236.dasm (-7.89 % of base)
        -160 : 250317.dasm (-40.82 % of base)
         -80 : 250227.dasm (-14.93 % of base)
         -40 : 250223.dasm (-2.79 % of base)
         -32 : 250279.dasm (-5.26 % of base)
         -24 : 250244.dasm (-4.44 % of base)
         -24 : 250325.dasm (-2.75 % of base)
         -20 : 250191.dasm (-5.95 % of base)
         -20 : 250330.dasm (-10.87 % of base)
         -20 : 250333.dasm (-5.10 % of base)
         -16 : 582444.dasm (-3.77 % of base)
         -16 : 250329.dasm (-6.67 % of base)
         -16 : 583128.dasm (-3.77 % of base)
         -16 : 250262.dasm (-4.04 % of base)
         -12 : 250312.dasm (-3.19 % of base)
         -12 : 250210.dasm (-4.55 % of base)
         -12 : 250327.dasm (-4.35 % of base)
          -8 : 250249.dasm (-1.80 % of base)
          -8 : 250289.dasm (-1.85 % of base)
          -8 : 250335.dasm (-3.08 % of base)

41 total files with Code Size differences (29 improved, 12 regressed), 22 unchanged.

Top method regressions (bytes):
          32 (5.59 % of base) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          20 (2.84 % of base) : 250197.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          16 (3.39 % of base) : 250324.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
          16 (5.56 % of base) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
           8 (0.88 % of base) : 586569.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
           8 (0.88 % of base) : 591375.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
           8 (2.44 % of base) : 250217.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           8 (2.47 % of base) : 250234.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           4 (1.35 % of base) : 250328.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (2.86 % of base) : 250285.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
           4 (1.30 % of base) : 250229.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)

Top method improvements (bytes):
        -176 (-7.89 % of base) : 250236.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
        -160 (-40.82 % of base) : 250317.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 250227.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -40 (-2.79 % of base) : 250223.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
         -32 (-5.26 % of base) : 250279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -24 (-4.44 % of base) : 250244.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
         -24 (-2.75 % of base) : 250325.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
         -20 (-5.95 % of base) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-5.10 % of base) : 250333.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -20 (-10.87 % of base) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -16 (-3.77 % of base) : 582444.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 583128.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-6.67 % of base) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -16 (-4.04 % of base) : 250262.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
         -12 (-4.35 % of base) : 250327.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -12 (-3.19 % of base) : 250312.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -12 (-4.55 % of base) : 250210.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -8 (-1.85 % of base) : 250289.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
          -8 (-3.08 % of base) : 250335.dasm - System.Diagnostics.Tracing.EtwEventProvider:Unregister():this (FullOpts)
          -8 (-1.80 % of base) : 250249.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)

Top method regressions (percentages):
          32 (5.59 % of base) : 250290.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
          16 (5.56 % of base) : 250237.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
          12 (4.35 % of base) : 250194.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
          16 (3.39 % of base) : 250324.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
           4 (2.86 % of base) : 250285.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Array,long,System.Object) (FullOpts)
          20 (2.84 % of base) : 250197.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
           8 (2.47 % of base) : 250234.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
           8 (2.44 % of base) : 250217.dasm - System.AppContext:GetData(System.String):System.Object (FullOpts)
           4 (1.35 % of base) : 250328.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           4 (1.30 % of base) : 250229.dasm - System.Text.UTF8Encoding:SetDefaultFallbacks():this (FullOpts)
           8 (0.88 % of base) : 586569.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
           8 (0.88 % of base) : 591375.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)

Top method improvements (percentages):
        -160 (-40.82 % of base) : 250317.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -80 (-14.93 % of base) : 250227.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -20 (-10.87 % of base) : 250330.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
        -176 (-7.89 % of base) : 250236.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -16 (-6.67 % of base) : 250329.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (FullOpts)
         -20 (-5.95 % of base) : 250191.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -32 (-5.26 % of base) : 250279.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -20 (-5.10 % of base) : 250333.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
          -4 (-5.00 % of base) : 250242.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
         -12 (-4.55 % of base) : 250210.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
         -24 (-4.44 % of base) : 250244.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
         -12 (-4.35 % of base) : 250327.dasm - System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this (FullOpts)
         -16 (-4.04 % of base) : 250262.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
          -4 (-3.85 % of base) : 250209.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
         -16 (-3.77 % of base) : 582444.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
         -16 (-3.77 % of base) : 583128.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -4 (-3.45 % of base) : 250214.dasm - System.Diagnostics.Tracing.EventSource:.cctor() (FullOpts)
         -12 (-3.19 % of base) : 250312.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
          -8 (-3.08 % of base) : 250335.dasm - System.Diagnostics.Tracing.EtwEventProvider:Unregister():this (FullOpts)
          -4 (-2.94 % of base) : 250219.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 330811772 (overridden on cmd)
Total bytes of diff: 330811680 (overridden on cmd)
Total bytes of delta: -92 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          40 : 598322.dasm (2.10 % of base)
          16 : 163292.dasm (0.59 % of base)
          16 : 366288.dasm (0.83 % of base)
           8 : 633055.dasm (1.69 % of base)
           8 : 363319.dasm (0.63 % of base)
           8 : 366369.dasm (0.56 % of base)
           8 : 638273.dasm (0.84 % of base)
           4 : 125949.dasm (0.40 % of base)
           4 : 368049.dasm (0.49 % of base)
           4 : 47243.dasm (0.43 % of base)
           4 : 506587.dasm (0.46 % of base)
           4 : 512128.dasm (0.38 % of base)
           4 : 83928.dasm (0.43 % of base)
           4 : 506055.dasm (0.50 % of base)

Top file improvements (bytes):
         -36 : 156125.dasm (-4.11 % of base)
         -20 : 386986.dasm (-1.67 % of base)
          -8 : 157172.dasm (-0.82 % of base)
          -8 : 297556.dasm (-1.52 % of base)
          -8 : 523892.dasm (-1.52 % of base)
          -8 : 404757.dasm (-0.78 % of base)
          -8 : 163240.dasm (-0.97 % of base)
          -8 : 176717.dasm (-1.49 % of base)
          -8 : 296605.dasm (-0.78 % of base)
          -8 : 504831.dasm (-1.52 % of base)
          -4 : 183978.dasm (-0.34 % of base)
          -4 : 360406.dasm (-0.36 % of base)
          -4 : 375558.dasm (-0.42 % of base)
          -4 : 474791.dasm (-1.16 % of base)
          -4 : 595149.dasm (-0.70 % of base)
          -4 : 80557.dasm (-0.42 % of base)
          -4 : 89321.dasm (-0.63 % of base)
          -4 : 109306.dasm (-1.14 % of base)
          -4 : 327868.dasm (-0.42 % of base)
          -4 : 637154.dasm (-0.40 % of base)

38 total files with Code Size differences (24 improved, 14 regressed), 23 unchanged.

Top method regressions (bytes):
          40 (2.10 % of base) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
          16 (0.59 % of base) : 163292.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
          16 (0.83 % of base) : 366288.dasm - System.IO.StreamBuffer:TryReadFromBuffer(System.Span`1[ubyte]):System.ValueTuple`2[ubyte,int]:this (Tier1)
           8 (0.63 % of base) : 363319.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:GetStateMachineBox[System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier1)
           8 (0.84 % of base) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
           8 (1.69 % of base) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
           8 (0.56 % of base) : 366369.dasm - System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task (Tier1)
           4 (0.40 % of base) : 125949.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.43 % of base) : 47243.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.43 % of base) : 83928.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.46 % of base) : 506587.dasm - System.Formats.Asn1.AsnWriter:WriteBoolean(ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
           4 (0.38 % of base) : 512128.dasm - System.Formats.Asn1.AsnWriter:WriteInteger(System.Numerics.BigInteger,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
           4 (0.50 % of base) : 506055.dasm - System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
           4 (0.49 % of base) : 368049.dasm - System.Net.NegotiateAuthenticationPal+WindowsNegotiateAuthenticationPal:.ctor(System.Net.Security.NegotiateAuthenticationServerOptions):this (Tier1)

Top method improvements (bytes):
         -36 (-4.11 % of base) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -20 (-1.67 % of base) : 386986.dasm - System.Number:FormatHalf[ushort](byref,System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
          -8 (-0.82 % of base) : 157172.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          -8 (-0.97 % of base) : 163240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
          -8 (-0.78 % of base) : 404757.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -8 (-0.78 % of base) : 296605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -8 (-1.52 % of base) : 297556.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 523892.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.49 % of base) : 176717.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 504831.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -4 (-0.70 % of base) : 595149.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory:GetBinder(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          -4 (-0.63 % of base) : 89321.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          -4 (-0.41 % of base) : 637772.dasm - System.AggregateException:Flatten():System.AggregateException:this (Tier1)
          -4 (-0.46 % of base) : 197549.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
          -4 (-0.34 % of base) : 183978.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.42 % of base) : 375558.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.42 % of base) : 327868.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.40 % of base) : 637154.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.20 % of base) : 116957.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-1.14 % of base) : 109306.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)

Top method regressions (percentages):
          40 (2.10 % of base) : 598322.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
           8 (1.69 % of base) : 633055.dasm - System.Threading.Tasks.Dataflow.Internal.QueuedMap`2+ArrayBasedLinkedQueue`1[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]):int:this (Tier1)
           8 (0.84 % of base) : 638273.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
          16 (0.83 % of base) : 366288.dasm - System.IO.StreamBuffer:TryReadFromBuffer(System.Span`1[ubyte]):System.ValueTuple`2[ubyte,int]:this (Tier1)
           8 (0.63 % of base) : 363319.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:GetStateMachineBox[System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier1)
          16 (0.59 % of base) : 163292.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
           8 (0.56 % of base) : 366369.dasm - System.Threading.Tasks.Task:WhenAll(System.Collections.Generic.IEnumerable`1[System.Threading.Tasks.Task]):System.Threading.Tasks.Task (Tier1)
           4 (0.50 % of base) : 506055.dasm - System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
           4 (0.49 % of base) : 368049.dasm - System.Net.NegotiateAuthenticationPal+WindowsNegotiateAuthenticationPal:.ctor(System.Net.Security.NegotiateAuthenticationServerOptions):this (Tier1)
           4 (0.46 % of base) : 506587.dasm - System.Formats.Asn1.AsnWriter:WriteBoolean(ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
           4 (0.43 % of base) : 47243.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.43 % of base) : 83928.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
           4 (0.40 % of base) : 125949.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:.ctor(int,int,ubyte,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.38 % of base) : 512128.dasm - System.Formats.Asn1.AsnWriter:WriteInteger(System.Numerics.BigInteger,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)

Top method improvements (percentages):
         -36 (-4.11 % of base) : 156125.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -20 (-1.67 % of base) : 386986.dasm - System.Number:FormatHalf[ushort](byref,System.Half,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String (Tier1)
          -8 (-1.52 % of base) : 297556.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 523892.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.52 % of base) : 504831.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -8 (-1.49 % of base) : 176717.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
          -4 (-1.16 % of base) : 474791.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          -4 (-1.14 % of base) : 109306.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:.ctor(System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          -8 (-0.97 % of base) : 163240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int (Tier1)
          -8 (-0.82 % of base) : 157172.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          -8 (-0.78 % of base) : 404757.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -8 (-0.78 % of base) : 296605.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.70 % of base) : 595149.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory:GetBinder(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          -4 (-0.63 % of base) : 89321.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          -4 (-0.46 % of base) : 197549.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
          -4 (-0.42 % of base) : 375558.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.42 % of base) : 327868.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -4 (-0.42 % of base) : 80557.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
          -4 (-0.41 % of base) : 637772.dasm - System.AggregateException:Flatten():System.AggregateException:this (Tier1)
          -4 (-0.40 % of base) : 637154.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)



windows x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,040,723 +51
benchmarks.run_pgo.windows.x64.checked.mch 36,232,799 -2
coreclr_tests.run.windows.x64.checked.mch 393,194,438 +34
libraries_tests.run.windows.x64.Release.mch 282,129,292 +329

FullOpts (+412 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,549,674 +51
benchmarks.run_pgo.windows.x64.checked.mch 22,062,143 -2
coreclr_tests.run.windows.x64.checked.mch 120,405,584 +34
libraries_tests.run.windows.x64.Release.mch 106,270,974 +329

Example diffs

aspnet.run.windows.x64.checked.mch

-12 (-1.64%) : 100361.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)

@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, r9 ; gcrRegs +[rsi] ;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08] cmp r14d, 1
- jle G_M39096_IG11 - ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05 + ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50 G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov r14, bword ptr [rbx] ; byrRegs +[r14] mov r8d, dword ptr [rbx+0x08] test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14] ; gcrRegs +[rdx] cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08] ; gcrRegs +[r8] mov rcx, gword ptr [rsi+0x08] @@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx ; byrRegs -[rbx] ; gcr arg pop 0 test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov rdx, gword ptr [r14+0x08] @@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx rdi] ; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11 - ;; size=77 bbWeight=0.86 PerfScore 22.05 -G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs +[rsi] - ; byrRegs +[rbx] - cmp r14d, 3 - je G_M39096_IG23 - mov rcx, qword ptr [rdi+0x30] - mov rcx, qword ptr [rcx] - mov r8, qword ptr [rcx+0x50] - test r8, r8 - je SHORT G_M39096_IG07 - ;; size=26 bbWeight=0.14 PerfScore 1.22 -G_M39096_IG06: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M39096_IG08 - ;; size=2 bbWeight=0.11 PerfScore 0.23 -G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdi - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r8, rax - ;; size=21 bbWeight=0.03 PerfScore 0.05 -G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov dword ptr [rsp+0x20], r14d - lea rdx, [rsp+0x38] - mov rcx, rbx - ; byrRegs +[rcx] - xor r9d, r9d - call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] - ; byrRegs -[rcx rbx] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.14 PerfScore 0.72 -G_M39096_IG09: ; bbWeight=0.14, nogc, extend - vmovdqu xmm0, xmmword ptr [rsp+0x38] - vmovdqu xmmword ptr [rsp+0x28], xmm0 - ;; size=12 bbWeight=0.14 PerfScore 0.57 -G_M39096_IG10: ; bbWeight=0.14, extend - lea rdx, [rsp+0x28] - mov rcx, rdi - mov r8, rsi - ; gcrRegs +[r8] - call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] - ; gcrRegs -[rsi r8] - ; gcr arg pop 0 - ;; size=17 bbWeight=0.14 PerfScore 0.57 -G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.34 +G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128 pop rbx pop rbp @@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi] ; byrRegs +[rbx]
- test ebp, ebp - je G_M39096_IG29 - dec ebp
+ cmp r14d, 3 + je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30] mov rcx, qword ptr [rcx] mov r8, qword ptr [rcx+0x50] test r8, r8
- je SHORT G_M39096_IG15 - jmp SHORT G_M39096_IG16 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09 + ;; size=26 bbWeight=0.14 PerfScore 1.22 +G_M39096_IG08: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + jmp SHORT G_M39096_IG10 + ;; size=2 bbWeight=0.11 PerfScore 0.23 +G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0.03 PerfScore 0.05 +G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x38] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0.14 PerfScore 0.72 +G_M39096_IG11: ; bbWeight=0.14, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x38] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0.14 PerfScore 0.57 +G_M39096_IG12: ; bbWeight=0.14, isz, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp SHORT G_M39096_IG05 + ;; size=19 bbWeight=0.14 PerfScore 0.86 +G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG14 + jmp SHORT G_M39096_IG15 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r8, rax ;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x48] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG16: ; bbWeight=0, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x48] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M39096_IG17: ; bbWeight=0, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp G_M39096_IG05 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + test ebp, ebp + je SHORT G_M39096_IG13 + dec ebp + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG20 + jmp SHORT G_M39096_IG21 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d lea rdx, [rsp+0x68] mov rcx, rbx @@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, ; byrRegs -[rcx] ; gcr arg pop 0 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68] vmovdqu xmmword ptr [rsp+0x28], xmm0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28] mov rcx, rdi mov r8, rsi @@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend ...

-12 (-1.64%) : 118276.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)

@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, r9 ; gcrRegs +[rsi] ;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08] cmp r14d, 1
- jle G_M39096_IG11 - ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05 + ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50 G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov r14, bword ptr [rbx] ; byrRegs +[r14] mov r8d, dword ptr [rbx+0x08] test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14] ; gcrRegs +[rdx] cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08] ; gcrRegs +[r8] mov rcx, gword ptr [rsi+0x08] @@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx ; byrRegs -[rbx] ; gcr arg pop 0 test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov rdx, gword ptr [r14+0x08] @@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx rdi] ; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11 - ;; size=77 bbWeight=0.86 PerfScore 22.06 -G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs +[rsi] - ; byrRegs +[rbx] - cmp r14d, 3 - je G_M39096_IG23 - mov rcx, qword ptr [rdi+0x30] - mov rcx, qword ptr [rcx] - mov r8, qword ptr [rcx+0x50] - test r8, r8 - je SHORT G_M39096_IG07 - ;; size=26 bbWeight=0.14 PerfScore 1.22 -G_M39096_IG06: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M39096_IG08 - ;; size=2 bbWeight=0.11 PerfScore 0.23 -G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdi - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r8, rax - ;; size=21 bbWeight=0.03 PerfScore 0.05 -G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov dword ptr [rsp+0x20], r14d - lea rdx, [rsp+0x38] - mov rcx, rbx - ; byrRegs +[rcx] - xor r9d, r9d - call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] - ; byrRegs -[rcx rbx] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.14 PerfScore 0.72 -G_M39096_IG09: ; bbWeight=0.14, nogc, extend - vmovdqu xmm0, xmmword ptr [rsp+0x38] - vmovdqu xmmword ptr [rsp+0x28], xmm0 - ;; size=12 bbWeight=0.14 PerfScore 0.57 -G_M39096_IG10: ; bbWeight=0.14, extend - lea rdx, [rsp+0x28] - mov rcx, rdi - mov r8, rsi - ; gcrRegs +[r8] - call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] - ; gcrRegs -[rsi r8] - ; gcr arg pop 0 - ;; size=17 bbWeight=0.14 PerfScore 0.57 -G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.34 +G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128 pop rbx pop rbp @@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi] ; byrRegs +[rbx]
- test ebp, ebp - je G_M39096_IG29 - dec ebp
+ cmp r14d, 3 + je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30] mov rcx, qword ptr [rcx] mov r8, qword ptr [rcx+0x50] test r8, r8
- je SHORT G_M39096_IG15 - jmp SHORT G_M39096_IG16 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09 + ;; size=26 bbWeight=0.14 PerfScore 1.22 +G_M39096_IG08: ; bbWeight=0.11, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + jmp SHORT G_M39096_IG10 + ;; size=2 bbWeight=0.11 PerfScore 0.23 +G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0.03 PerfScore 0.05 +G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x38] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0.14 PerfScore 0.72 +G_M39096_IG11: ; bbWeight=0.14, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x38] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0.14 PerfScore 0.57 +G_M39096_IG12: ; bbWeight=0.14, isz, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp SHORT G_M39096_IG05 + ;; size=19 bbWeight=0.14 PerfScore 0.86 +G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG14 + jmp SHORT G_M39096_IG15 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r8, rax ;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x48] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG16: ; bbWeight=0, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x48] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M39096_IG17: ; bbWeight=0, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp G_M39096_IG05 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + test ebp, ebp + je SHORT G_M39096_IG13 + dec ebp + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG20 + jmp SHORT G_M39096_IG21 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d lea rdx, [rsp+0x68] mov rcx, rbx @@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, ; byrRegs -[rcx] ; gcr arg pop 0 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68] vmovdqu xmmword ptr [rsp+0x28], xmm0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28] mov rcx, rdi mov r8, rsi @@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend ...

-12 (-1.64%) : 128356.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span1[System.Canon],int,System.Comparison`1[System.Canon]) (Tier1)

@@ -80,27 +80,27 @@ G_M39096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, r9 ; gcrRegs +[rsi] ;; size=64 bbWeight=1 PerfScore 14.83
-G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, dword ptr [rbx+0x08] cmp r14d, 1
- jle G_M39096_IG11 - ;; size=14 bbWeight=1 PerfScore 3.25
+ jle SHORT G_M39096_IG05 + ;; size=10 bbWeight=1 PerfScore 3.25
G_M39096_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz cmp r14d, 16
- jg G_M39096_IG14
+ jg G_M39096_IG19
cmp r14d, 2
- jne SHORT G_M39096_IG05
+ jne SHORT G_M39096_IG07
;; size=16 bbWeight=1 PerfScore 2.50 G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz mov r14, bword ptr [rbx] ; byrRegs +[r14] mov r8d, dword ptr [rbx+0x08] test r8d, r8d
- je G_M39096_IG13
+ je G_M39096_IG18
mov rdx, gword ptr [r14] ; gcrRegs +[rdx] cmp r8d, 1
- jbe G_M39096_IG13
+ jbe G_M39096_IG18
mov r8, gword ptr [r14+0x08] ; gcrRegs +[r8] mov rcx, gword ptr [rsi+0x08] @@ -110,7 +110,7 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx ; byrRegs -[rbx] ; gcr arg pop 0 test eax, eax
- jle G_M39096_IG11
+ jle SHORT G_M39096_IG05
mov rdi, gword ptr [r14] ; gcrRegs +[rdi] mov rdx, gword ptr [r14+0x08] @@ -127,56 +127,11 @@ G_M39096_IG04: ; bbWeight=0.86, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx rdi] ; byrRegs -[rcx r14]
- jmp SHORT G_M39096_IG11 - ;; size=77 bbWeight=0.86 PerfScore 22.02 -G_M39096_IG05: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs +[rsi] - ; byrRegs +[rbx] - cmp r14d, 3 - je G_M39096_IG23 - mov rcx, qword ptr [rdi+0x30] - mov rcx, qword ptr [rcx] - mov r8, qword ptr [rcx+0x50] - test r8, r8 - je SHORT G_M39096_IG07 - ;; size=26 bbWeight=0.14 PerfScore 1.23 -G_M39096_IG06: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M39096_IG08 - ;; size=2 bbWeight=0.12 PerfScore 0.23 -G_M39096_IG07: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdi - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov r8, rax - ;; size=21 bbWeight=0.03 PerfScore 0.05 -G_M39096_IG08: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov dword ptr [rsp+0x20], r14d - lea rdx, [rsp+0x38] - mov rcx, rbx - ; byrRegs +[rcx] - xor r9d, r9d - call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] - ; byrRegs -[rcx rbx] - ; gcr arg pop 0 - ;; size=22 bbWeight=0.14 PerfScore 0.72 -G_M39096_IG09: ; bbWeight=0.14, nogc, extend - vmovdqu xmm0, xmmword ptr [rsp+0x38] - vmovdqu xmmword ptr [rsp+0x28], xmm0 - ;; size=12 bbWeight=0.14 PerfScore 0.58 -G_M39096_IG10: ; bbWeight=0.14, extend - lea rdx, [rsp+0x28] - mov rcx, rdi - mov r8, rsi - ; gcrRegs +[r8] - call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] - ; gcrRegs -[rsi r8] - ; gcr arg pop 0 - ;; size=17 bbWeight=0.14 PerfScore 0.58 -G_M39096_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=71 bbWeight=0.86 PerfScore 20.31 +G_M39096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M39096_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 128 pop rbx pop rbp @@ -187,31 +142,117 @@ G_M39096_IG12: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=18 bbWeight=1 PerfScore 4.75
-G_M39096_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M39096_IG07: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rsi] ; byrRegs +[rbx]
- test ebp, ebp - je G_M39096_IG29 - dec ebp
+ cmp r14d, 3 + je G_M39096_IG28
mov rcx, qword ptr [rdi+0x30] mov rcx, qword ptr [rcx] mov r8, qword ptr [rcx+0x50] test r8, r8
- je SHORT G_M39096_IG15 - jmp SHORT G_M39096_IG16 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ je SHORT G_M39096_IG09 + ;; size=26 bbWeight=0.14 PerfScore 1.23 +G_M39096_IG08: ; bbWeight=0.12, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + jmp SHORT G_M39096_IG10 + ;; size=2 bbWeight=0.12 PerfScore 0.23 +G_M39096_IG09: ; bbWeight=0.03, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0.03 PerfScore 0.05 +G_M39096_IG10: ; bbWeight=0.14, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x38] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0.14 PerfScore 0.72 +G_M39096_IG11: ; bbWeight=0.14, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x38] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0.14 PerfScore 0.58 +G_M39096_IG12: ; bbWeight=0.14, isz, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:InsertionSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp SHORT G_M39096_IG05 + ;; size=19 bbWeight=0.14 PerfScore 0.87 +G_M39096_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG14 + jmp SHORT G_M39096_IG15 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M39096_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rdi mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov r8, rax ;; size=21 bbWeight=0 PerfScore 0.00
-G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M39096_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov dword ptr [rsp+0x20], r14d + lea rdx, [rsp+0x48] + mov rcx, rbx + ; byrRegs +[rcx] + xor r9d, r9d + call [System.Span`1[System.__Canon]:Slice(int,int):System.Span`1[System.__Canon]:this] + ; byrRegs -[rcx rbx] + ; gcr arg pop 0 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG16: ; bbWeight=0, nogc, extend + vmovdqu xmm0, xmmword ptr [rsp+0x48] + vmovdqu xmmword ptr [rsp+0x28], xmm0 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M39096_IG17: ; bbWeight=0, extend + lea rdx, [rsp+0x28] + mov rcx, rdi + mov r8, rsi + ; gcrRegs +[r8] + call [System.Collections.Generic.ArraySortHelper`1[System.__Canon]:HeapSort(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon])] + ; gcrRegs -[rsi r8] + ; gcr arg pop 0 + jmp G_M39096_IG05 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M39096_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M39096_IG19: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz + ; gcrRegs +[rsi] + ; byrRegs +[rbx] + test ebp, ebp + je SHORT G_M39096_IG13 + dec ebp + mov rcx, qword ptr [rdi+0x30] + mov rcx, qword ptr [rcx] + mov r8, qword ptr [rcx+0x50] + test r8, r8 + je SHORT G_M39096_IG20 + jmp SHORT G_M39096_IG21 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M39096_IG20: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov r8, rax + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M39096_IG21: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov dword ptr [rsp+0x20], r14d lea rdx, [rsp+0x68] mov rcx, rbx @@ -221,11 +262,11 @@ G_M39096_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, ; byrRegs -[rcx] ; gcr arg pop 0 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M39096_IG17: ; bbWeight=0, nogc, extend
+G_M39096_IG22: ; bbWeight=0, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x68] vmovdqu xmmword ptr [rsp+0x28], xmm0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M39096_IG18: ; bbWeight=0, isz, extend
+G_M39096_IG23: ; bbWeight=0, isz, extend
lea rdx, [rsp+0x28] mov rcx, rdi mov r8, rsi @@ -239,17 +280,17 @@ G_M39096_IG18: ; bbWeight=0, isz, extend ...

+16 (+3.17%) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)

@@ -76,13 +76,13 @@ G_M63277_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; byrRegs +[rax] add rax, 16 ;; size=53 bbWeight=1 PerfScore 14.50
-G_M63277_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0001 {rax}, byref, isz
+G_M63277_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0001 {rax}, byref
mov rax, gword ptr [rax] ; gcrRegs +[rax] ; byrRegs -[rax] test rax, rax
- je SHORT G_M63277_IG06 - ;; size=8 bbWeight=1 PerfScore 3.25
+ je G_M63277_IG10 + ;; size=12 bbWeight=1 PerfScore 3.25
G_M63277_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz mov edx, dword ptr [rax+0x18] lea ecx, [rdx+0x01] @@ -124,15 +124,39 @@ G_M63277_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 mov ecx, dword ptr [rsp+0x44] and ecx, 0x3F8 sar ecx, 3
- je SHORT G_M63277_IG08
+ je SHORT G_M63277_IG09
;; size=112 bbWeight=1 PerfScore 29.25
-G_M63277_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M63277_IG05: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
xor edx, edx cmp ecx, 2 cmovne edx, ecx
- jmp SHORT G_M63277_IG09 - ;; size=10 bbWeight=0.50 PerfScore 1.39 -G_M63277_IG06: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 0.38 +G_M63277_IG06: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + mov dword ptr [rbp+0x2C], edx + cmp dword ptr [rbp+0x68], 0 + je G_M63277_IG11 + ;; size=13 bbWeight=1 PerfScore 5.00 +G_M63277_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E + call CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov rax, rbp + ; gcrRegs +[rax] + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M63277_IG08: ; bbWeight=1, epilog, nogc, extend + add rsp, 88 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M63277_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] + mov edx, 2 + jmp SHORT G_M63277_IG06 + ;; size=7 bbWeight=0.50 PerfScore 1.13 +G_M63277_IG10: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] +[rbx rsi] mov rcx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 @@ -159,8 +183,22 @@ G_M63277_IG06: ; bbWeight=0.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rcx, bword ptr [rcx] ; byrRegs +[rcx] add rcx, 16
- ;; size=95 bbWeight=0.00 PerfScore 0.02 -G_M63277_IG07: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0002 {rcx}, byref
+ jmp SHORT G_M63277_IG12 + ;; size=97 bbWeight=0.00 PerfScore 0.02 +G_M63277_IG11: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx rsi rdi] +[rbp] + ; byrRegs -[rcx] + lea rcx, bword ptr [rbp+0x60] + ; byrRegs +[rcx] + mov edx, 0x3E8 + call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this] + ; byrRegs -[rcx] + ; gcr arg pop 0 + jmp G_M63277_IG07 + ;; size=20 bbWeight=0.00 PerfScore 0.00 +G_M63277_IG12: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0002 {rcx}, byref + ; gcrRegs -[rbp] +[rbx rsi rdi] + ; byrRegs +[rcx]
mov rdx, rdi ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF @@ -170,42 +208,8 @@ G_M63277_IG07: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 ; gcrRegs +[rax] jmp G_M63277_IG04 ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M63277_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx rsi rdi] +[rbp] - mov edx, 2 - ;; size=5 bbWeight=0.50 PerfScore 0.13 -G_M63277_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz - mov dword ptr [rbp+0x2C], edx - cmp dword ptr [rbp+0x68], 0 - je SHORT G_M63277_IG12 - ;; size=9 bbWeight=1 PerfScore 5.00 -G_M63277_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - mov rcx, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - mov rax, rbp - ; gcrRegs +[rax] - ;; size=18 bbWeight=1 PerfScore 1.50 -G_M63277_IG11: ; bbWeight=1, epilog, nogc, extend - add rsp, 88 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=1 PerfScore 3.25 -G_M63277_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - lea rcx, bword ptr [rbp+0x60] - ; byrRegs +[rcx] - mov edx, 0x3E8 - call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this] - ; byrRegs -[rcx] - ; gcr arg pop 0 - jmp SHORT G_M63277_IG10 - ;; size=17 bbWeight=0.00 PerfScore 0.00
G_M63277_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbp] +[rbx rsi]
+ ; gcrRegs -[rax rdi]
mov rcx, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 ; gcr arg pop 0 @@ -227,7 +231,7 @@ G_M63277_IG14: ; bbWeight=0, nogc, extend vmovdqu xmm0, xmmword ptr [rsp+0x48] vmovdqu xmmword ptr [rsp+0x28], xmm0 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M63277_IG15: ; bbWeight=0, isz, extend
+G_M63277_IG15: ; bbWeight=0, extend
lea r8, [rsp+0x28] mov rdx, rsi ; gcrRegs +[rdx] @@ -236,8 +240,8 @@ G_M63277_IG15: ; bbWeight=0, isz, extend call [System.Text.Json.Utf8JsonWriter:.ctor(System.Buffers.IBufferWriter`1[ubyte],System.Text.Json.JsonWriterOptions):this] ; gcrRegs -[rcx rdx rsi] ; gcr arg pop 0
- jmp SHORT G_M63277_IG10 - ;; size=19 bbWeight=0 PerfScore 0.00
+ jmp G_M63277_IG07 + ;; size=22 bbWeight=0 PerfScore 0.00
G_M63277_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbp] +[rbx rsi] mov ecx, 5 @@ -255,10 +259,10 @@ G_M63277_IG17: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rcx, rax ; byrRegs +[rcx]
- jmp G_M63277_IG07
+ jmp G_M63277_IG12
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 504, prolog size 33, PerfScore 68.62, instruction count 120, allocated bytes for code 504 (MethodHash=ab5908d2) for method System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
+; Total bytes of code 520, prolog size 33, PerfScore 68.61, instruction count 121, allocated bytes for code 520 (MethodHash=ab5908d2) for method System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
; ============================================================ Unwind Info:

+11 (+3.35%) : 114046.dasm - System.Collections.Generic.Dictionary2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -18,7 +18,7 @@ ; V06 tmp2 [V06,T07] ( 4, 3.52) ref -> rdx ; V07 tmp3 [V07,T06] ( 3, 3.99) long -> rdx "spilling helperCall" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 3.00) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
+; V09 tmp5 [V09,T08] ( 6, 3.00) ref -> rsi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]>
; V10 tmp6 [V10,T03] ( 4, 5.43) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> ; V11 cse0 [V11,T05] ( 6, 4.23) long -> rcx multi-def "CSE - aggressive" ; V12 rat0 [V12,T10] ( 3, 2.27) long -> rcx "Spilling to split statement for tree" @@ -40,9 +40,9 @@ G_M55642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=17 bbWeight=1 PerfScore 3.75 G_M55642_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref test edx, edx
- jl G_M55642_IG20
+ jl G_M55642_IG21
test edx, edx
- jg G_M55642_IG21
+ jg G_M55642_IG22
;; size=16 bbWeight=1 PerfScore 2.50 G_M55642_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi @@ -88,57 +88,52 @@ G_M55642_IG08: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, mov rdx, qword ptr [rdx] mov rax, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rax
- jne G_M55642_IG19
+ jne G_M55642_IG20
;; size=38 bbWeight=1 PerfScore 11.75 G_M55642_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov rax, 0xD1FFAB1E ; const ptr cmp rdx, gword ptr [rax]
- jne SHORT G_M55642_IG11
+ jne SHORT G_M55642_IG14
;; size=19 bbWeight=1.00 PerfScore 6.24
-G_M55642_IG10: ; bbWeight=0.57, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M55642_IG10: ; bbWeight=0.57, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov rdx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdx] ; gcrRegs +[rsi]
- jmp SHORT G_M55642_IG13 - ;; size=15 bbWeight=0.57 PerfScore 2.44 -G_M55642_IG11: ; bbWeight=0.43, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=0.57 PerfScore 1.29 +G_M55642_IG11: ; bbWeight=0.87, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + test rsi, rsi + je G_M55642_IG20 + ;; size=9 bbWeight=0.87 PerfScore 1.08 +G_M55642_IG12: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, qword ptr [rcx+0x30] + mov rdx, qword ptr [rdx] + mov rdx, qword ptr [rdx+0x48] + test rdx, rdx + je SHORT G_M55642_IG16 + ;; size=16 bbWeight=1.00 PerfScore 7.24 +G_M55642_IG13: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M55642_IG17 + ;; size=2 bbWeight=0.80 PerfScore 1.60 +G_M55642_IG14: ; bbWeight=0.43, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rdx] mov rax, 0xD1FFAB1E ; const ptr cmp rdx, gword ptr [rax]
- je SHORT G_M55642_IG15
+ je SHORT G_M55642_IG19
;; size=15 bbWeight=0.43 PerfScore 1.81
-G_M55642_IG12: ; bbWeight=0.29, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M55642_IG15: ; bbWeight=0.29, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; const ptr xor rsi, rsi ; gcrRegs +[rsi] mov r8, 0xD1FFAB1E ; const ptr cmp rdx, gword ptr [rax] cmove rsi, gword ptr [r8]
- ;; size=29 bbWeight=0.29 PerfScore 1.99 -G_M55642_IG13: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx] - test rsi, rsi - je SHORT G_M55642_IG19 - mov rdx, qword ptr [rcx+0x30] - mov rdx, qword ptr [rdx] - mov rdx, qword ptr [rdx+0x48] - test rdx, rdx - je SHORT G_M55642_IG16 - ;; size=21 bbWeight=1.00 PerfScore 8.49 -G_M55642_IG14: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M55642_IG17 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M55642_IG15: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov rdx, 0xD1FFAB1E ; const ptr - mov rsi, gword ptr [rdx] - ; gcrRegs +[rsi] - jmp SHORT G_M55642_IG13 - ;; size=15 bbWeight=0.13 PerfScore 0.56
+ jmp SHORT G_M55642_IG11 + ;; size=31 bbWeight=0.29 PerfScore 2.58
G_M55642_IG16: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 @@ -166,19 +161,27 @@ G_M55642_IG18: ; bbWeight=1.00, epilog, nogc, extend pop rsi ret ;; size=7 bbWeight=1.00 PerfScore 2.25
-G_M55642_IG19: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M55642_IG19: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + mov rdx, 0xD1FFAB1E ; const ptr + mov rsi, gword ptr [rdx] + ; gcrRegs +[rsi] + test rsi, rsi + jne G_M55642_IG12 + ;; size=22 bbWeight=0.13 PerfScore 0.46 +G_M55642_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rsi]
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.00 PerfScore 0.00
-G_M55642_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M55642_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
mov ecx, 22 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M55642_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M55642_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi] mov rcx, rbx ; gcrRegs +[rcx] @@ -188,7 +191,7 @@ G_M55642_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M55642_IG03 ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 11, PerfScore 56.20, instruction count 84, allocated bytes for code 328 (MethodHash=9feb26a5) for method System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 339, prolog size 11, PerfScore 55.38, instruction count 85, allocated bytes for code 339 (MethodHash=9feb26a5) for method System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+18 (+3.78%) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)

@@ -63,11 +63,11 @@ G_M54030_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, mov rcx, qword ptr GS:[0x0058] mov rcx, qword ptr [rcx+0x48] cmp dword ptr [rcx+0x190], 11
- jl G_M54030_IG12
+ jl G_M54030_IG13
mov rcx, qword ptr [rcx+0x198] mov rcx, qword ptr [rcx+0x58] test rcx, rcx
- je G_M54030_IG12
+ je G_M54030_IG13
mov rax, bword ptr [rcx] ; byrRegs +[rax] add rax, 16 @@ -76,7 +76,7 @@ G_M54030_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0049 {rax rbx r mov rbp, gword ptr [rax] ; gcrRegs +[rbp] test rbp, rbp
- je G_M54030_IG06
+ je G_M54030_IG10
;; size=12 bbWeight=1 PerfScore 3.25 G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref, isz ; byrRegs -[rax] @@ -84,7 +84,7 @@ G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rs lea edx, [rcx+0x01] mov dword ptr [rbp+0x18], edx test ecx, ecx
- jne G_M54030_IG15
+ jne G_M54030_IG12
mov rdx, gword ptr [rbp+0x08] ; gcrRegs +[rdx] mov rcx, rsi @@ -138,15 +138,37 @@ G_M54030_IG04: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rs mov byte ptr [rbp+0x37], al and ebx, 0x3F8 sar ebx, 3
- je SHORT G_M54030_IG08
+ je SHORT G_M54030_IG09
;; size=145 bbWeight=1 PerfScore 43.00
-G_M54030_IG05: ; bbWeight=0.51, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+G_M54030_IG05: ; bbWeight=0.51, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
xor eax, eax cmp ebx, 2 cmovne eax, ebx
- jmp SHORT G_M54030_IG09 - ;; size=10 bbWeight=0.51 PerfScore 1.40 -G_M54030_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ ;; size=8 bbWeight=0.51 PerfScore 0.38 +G_M54030_IG06: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + mov dword ptr [rbp+0x2C], eax + cmp dword ptr [rbp+0x68], 0 + je G_M54030_IG14 + ;; size=13 bbWeight=1 PerfScore 5.00 +G_M54030_IG07: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + mov rax, rbp + ; gcrRegs +[rax] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M54030_IG08: ; bbWeight=1, epilog, nogc, extend + add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r14 + ret + ;; size=11 bbWeight=1 PerfScore 3.75 +G_M54030_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] + mov eax, 2 + jmp SHORT G_M54030_IG06 + ;; size=7 bbWeight=0.50 PerfScore 1.12 +G_M54030_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rbp] ; byrRegs +[rbx rsi] mov rcx, 0xD1FFAB1E ; System.Text.Json.Utf8JsonWriterCache+ThreadLocalState @@ -163,16 +185,16 @@ G_M54030_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs mov rcx, qword ptr GS:[0x0058] mov rcx, qword ptr [rcx+0x48] cmp dword ptr [rcx+0x190], 11
- jl SHORT G_M54030_IG13
+ jl G_M54030_IG15
mov rcx, qword ptr [rcx+0x198] mov rcx, qword ptr [rcx+0x58] test rcx, rcx
- je SHORT G_M54030_IG13
+ je G_M54030_IG15
mov rcx, bword ptr [rcx] ; byrRegs +[rcx] add rcx, 16
- ;; size=72 bbWeight=0.00 PerfScore 0.00 -G_M54030_IG07: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx rbx rsi}, byref
+ ;; size=80 bbWeight=0.00 PerfScore 0.00 +G_M54030_IG11: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx rbx rsi}, byref
mov rdx, rbp ; gcrRegs +[rdx] call CORINFO_HELP_ASSIGN_REF @@ -180,61 +202,8 @@ G_M54030_IG07: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=004A {rcx ; byrRegs -[rcx] jmp G_M54030_IG04 ;; size=13 bbWeight=0.00 PerfScore 0.00
-G_M54030_IG08: ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx rsi] - mov eax, 2 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M54030_IG09: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz - mov dword ptr [rbp+0x2C], eax - cmp dword ptr [rbp+0x68], 0 - je SHORT G_M54030_IG14 - ;; size=9 bbWeight=1 PerfScore 5.00 -G_M54030_IG10: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - mov rax, rbp - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M54030_IG11: ; bbWeight=1, epilog, nogc, extend - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=1 PerfScore 3.75 -G_M54030_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref - ; gcrRegs -[rax rbp] - ; byrRegs +[rbx rsi] - mov ecx, 11 - call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED - ; byrRegs +[rax] - ; gcr arg pop 0 - jmp G_M54030_IG03 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M54030_IG13: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref, isz - ; gcrRegs +[rbp] - ; byrRegs -[rax] - mov ecx, 11 - call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED - ; byrRegs +[rax] - ; gcr arg pop 0 - mov rcx, rax - ; byrRegs +[rcx] - jmp SHORT G_M54030_IG07 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M54030_IG14: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rax rcx rbx rsi] - lea rcx, bword ptr [rbp+0x60] - ; byrRegs +[rcx] - mov edx, 0x3E8 - call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this] - ; byrRegs -[rcx] - ; gcr arg pop 0 - jmp SHORT G_M54030_IG10 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M54030_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M54030_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rbp]
- ; byrRegs +[rbx rsi]
mov rcx, 0xD1FFAB1E ; System.Text.Json.PooledByteBufferWriter call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -270,10 +239,40 @@ G_M54030_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, ; gcrRegs -[rax rcx rdx] ; byrRegs -[rbx rsi r8] ; gcr arg pop 0
- jmp G_M54030_IG10
+ jmp G_M54030_IG07
;; size=78 bbWeight=0 PerfScore 0.00
+G_M54030_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref + ; gcrRegs -[rbp] + ; byrRegs +[rbx rsi] + mov ecx, 11 + call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED + ; byrRegs +[rax] + ; gcr arg pop 0 + jmp G_M54030_IG03 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M54030_IG14: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbp] + ; byrRegs -[rax rbx rsi] + lea rcx, bword ptr [rbp+0x60] + ; byrRegs +[rcx] + mov edx, 0x3E8 + call [System.Text.Json.JsonWriterOptions:set_MaxDepth(int):this] + ; byrRegs -[rcx] + ; gcr arg pop 0 + jmp G_M54030_IG07 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M54030_IG15: ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref + ; byrRegs +[rbx rsi] + mov ecx, 11 + call CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED + ; byrRegs +[rax] + ; gcr arg pop 0 + mov rcx, rax + ; byrRegs +[rcx] + jmp G_M54030_IG11 + ;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 476, prolog size 10, PerfScore 77.27, instruction count 122, allocated bytes for code 476 (MethodHash=778d2cf1) for method System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
+; Total bytes of code 494, prolog size 10, PerfScore 77.26, instruction count 122, allocated bytes for code 494 (MethodHash=778d2cf1) for method System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-4 (-1.69%) : 86915.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -55,57 +55,51 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, ; byrRegs +[rbp] mov r14d, dword ptr [rcx+0x08] cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25 G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz ; byrRegs -[rcx] cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx mov edx, dword ptr [rbp+4*rcx] cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi mov r8d, dword ptr [rbp+4*rcx] mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x20] mov eax, dword ptr [rcx+0x08] cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx mov r10d, dword ptr [rcx+4*r10+0x10] cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d mov ecx, dword ptr [rcx+4*rax+0x10] ; gcrRegs -[rcx] cmp r10d, ecx
- jge SHORT G_M64750_IG05 - ;; size=91 bbWeight=1 PerfScore 25.50 -G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09 + ;; size=87 bbWeight=1 PerfScore 25.50 +G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi] mov eax, -1
- jmp SHORT G_M64750_IG06 - ;; size=7 bbWeight=0.64 PerfScore 1.43 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref - xor eax, eax - cmp r10d, ecx - setg al - ;; size=8 bbWeight=0.36 PerfScore 0.54 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d test eax, eax cmovne edx, eax ;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp] add rsp, 32 pop rbx @@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r14 ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp] mov ecx, ebx mov ecx, dword ptr [rbp+4*rcx] @@ -125,14 +119,30 @@ G_M64750_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=000 mov dword ptr [rbp+4*rdx], eax mov edx, esi mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.43 PerfScore 3.87
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz + xor eax, eax + cmp r10d, ecx + setg al + jmp SHORT G_M64750_IG05 + ;; size=10 bbWeight=0.36 PerfScore 1.27 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz + ; gcrRegs +[rdi] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this + ; gcrRegs -[rcx rdi] + ; gcr arg pop 0 + mov edx, eax + jmp SHORT G_M64750_IG06 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -144,17 +154,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, ; gcr arg pop 0 jmp G_M64750_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this - ; gcrRegs -[rcx rdi] - ; gcr arg pop 0 - mov edx, eax - jmp SHORT G_M64750_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 10, PerfScore 48.35, instruction count 72, allocated bytes for code 236 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 232, prolog size 10, PerfScore 47.80, instruction count 72, allocated bytes for code 232 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

-4 (-1.69%) : 85608.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -55,57 +55,51 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, ; byrRegs +[rbp] mov r14d, dword ptr [rcx+0x08] cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25 G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz ; byrRegs -[rcx] cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx mov edx, dword ptr [rbp+4*rcx] cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi mov r8d, dword ptr [rbp+4*rcx] mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.IntStruct,System.Collections.IntStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x20] mov eax, dword ptr [rcx+0x08] cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx mov r10d, dword ptr [rcx+4*r10+0x10] cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d mov ecx, dword ptr [rcx+4*rax+0x10] ; gcrRegs -[rcx] cmp r10d, ecx
- jge SHORT G_M64750_IG05 - ;; size=91 bbWeight=1 PerfScore 25.50 -G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09 + ;; size=87 bbWeight=1 PerfScore 25.50 +G_M64750_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi] mov eax, -1
- jmp SHORT G_M64750_IG06 - ;; size=7 bbWeight=0.63 PerfScore 1.43 -G_M64750_IG05: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref - xor eax, eax - cmp r10d, ecx - setg al - ;; size=8 bbWeight=0.37 PerfScore 0.55 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.63 PerfScore 0.16 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d test eax, eax cmovne edx, eax ;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp] add rsp, 32 pop rbx @@ -115,7 +109,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r14 ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp] mov ecx, ebx mov ecx, dword ptr [rbp+4*rcx] @@ -125,14 +119,30 @@ G_M64750_IG09: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=000 mov dword ptr [rbp+4*rdx], eax mov edx, esi mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.41 PerfScore 3.73
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz + xor eax, eax + cmp r10d, ecx + setg al + jmp SHORT G_M64750_IG05 + ;; size=10 bbWeight=0.37 PerfScore 1.28 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz + ; gcrRegs +[rdi] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this + ; gcrRegs -[rcx rdi] + ; gcr arg pop 0 + mov edx, eax + jmp SHORT G_M64750_IG06 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -144,17 +154,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, ; gcr arg pop 0 jmp G_M64750_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this - ; gcrRegs -[rcx rdi] - ; gcr arg pop 0 - mov edx, eax - jmp SHORT G_M64750_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 236, prolog size 10, PerfScore 48.21, instruction count 72, allocated bytes for code 236 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 232, prolog size 10, PerfScore 47.67, instruction count 72, allocated bytes for code 232 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

-4 (-1.64%) : 39441.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span1[int],System.Comparison`1[int],int,int) (Tier1)

@@ -55,59 +55,53 @@ G_M64750_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, ; byrRegs +[rbp] mov r14d, dword ptr [rcx+0x08] cmp ebx, esi
- je G_M64750_IG11
+ je G_M64750_IG12
;; size=15 bbWeight=1 PerfScore 5.25 G_M64750_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz ; byrRegs -[rcx] cmp ebx, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, ebx mov edx, dword ptr [rbp+4*rcx] cmp esi, r14d
- jae G_M64750_IG10
+ jae G_M64750_IG11
mov ecx, esi mov r8d, dword ptr [rbp+4*rcx] mov rcx, 0xD1FFAB1E ; code for System.Linq.EnumerableSorter`2[System.Collections.BigStruct,System.Collections.BigStruct]:CompareAnyKeys_DefaultComparer_NoNext_Ascending(int,int):int:this cmp qword ptr [rdi+0x18], rcx
- jne G_M64750_IG12
+ jne SHORT G_M64750_IG10
mov rcx, gword ptr [rdi+0x08] ; gcrRegs +[rcx] mov rcx, gword ptr [rcx+0x20] mov eax, dword ptr [rcx+0x08] cmp edx, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov r10d, edx shl r10, 5 mov r10d, dword ptr [rcx+r10+0x1C] cmp r8d, eax
- jae SHORT G_M64750_IG10
+ jae SHORT G_M64750_IG11
mov eax, r8d shl rax, 5 mov ecx, dword ptr [rcx+rax+0x1C] ; gcrRegs -[rcx] cmp r10d, ecx
- jge SHORT G_M64750_IG05 - ;; size=99 bbWeight=1 PerfScore 26.50 -G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ jge SHORT G_M64750_IG09 + ;; size=95 bbWeight=1 PerfScore 26.50 +G_M64750_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rdi] mov eax, -1
- jmp SHORT G_M64750_IG06 - ;; size=7 bbWeight=0.64 PerfScore 1.44 -G_M64750_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref - xor eax, eax - cmp r10d, ecx - setg al - ;; size=8 bbWeight=0.36 PerfScore 0.54 -G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ ;; size=5 bbWeight=0.64 PerfScore 0.16 +G_M64750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
sub edx, r8d test eax, eax cmovne edx, eax ;; size=8 bbWeight=1 PerfScore 0.75
-G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+G_M64750_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
test edx, edx
- jg SHORT G_M64750_IG09
+ jg SHORT G_M64750_IG08
;; size=4 bbWeight=1 PerfScore 1.25
-G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M64750_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rbp] add rsp, 32 pop rbx @@ -117,7 +111,7 @@ G_M64750_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r14 ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M64750_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs +[rbp] mov ecx, ebx mov ecx, dword ptr [rbp+4*rcx] @@ -127,14 +121,30 @@ G_M64750_IG09: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000 mov dword ptr [rbp+4*rdx], eax mov edx, esi mov dword ptr [rbp+4*rdx], ecx
- jmp SHORT G_M64750_IG08
+ jmp SHORT G_M64750_IG07
;; size=26 bbWeight=0.46 PerfScore 4.12
-G_M64750_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M64750_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz + xor eax, eax + cmp r10d, ecx + setg al + jmp SHORT G_M64750_IG05 + ;; size=10 bbWeight=0.36 PerfScore 1.26 +G_M64750_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz + ; gcrRegs +[rdi] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this + ; gcrRegs -[rcx rdi] + ; gcr arg pop 0 + mov edx, eax + jmp SHORT G_M64750_IG06 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M64750_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbp] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -146,17 +156,8 @@ G_M64750_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, ; gcr arg pop 0 jmp G_M64750_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M64750_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Comparison`1[int]:Invoke(int,int):int:this - ; gcrRegs -[rcx rdi] - ; gcr arg pop 0 - mov edx, eax - jmp SHORT G_M64750_IG07 - ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 244, prolog size 10, PerfScore 49.60, instruction count 74, allocated bytes for code 244 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
+; Total bytes of code 240, prolog size 10, PerfScore 49.03, instruction count 74, allocated bytes for code 240 (MethodHash=b2d90311) for method System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
; ============================================================ Unwind Info:

+4 (+2.08%) : 77017.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)

@@ -51,50 +51,44 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ebx, r8d mov esi, r9d ;; size=25 bbWeight=1 PerfScore 9.00
-G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref, isz
+G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx] mov rbp, bword ptr [rcx] ; byrRegs +[rbp] mov r14d, dword ptr [rcx+0x08] cmp ebx, esi
- je SHORT G_M8313_IG10 - ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M8313_IG11 + ;; size=15 bbWeight=1 PerfScore 5.25
G_M8313_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz ; byrRegs -[rcx] cmp ebx, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, ebx lea r15, bword ptr [rbp+4*rcx] ; byrRegs +[r15] mov edx, dword ptr [r15] cmp esi, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, esi lea r13, bword ptr [rbp+4*rcx] ; byrRegs +[r13] mov r8d, dword ptr [r13] mov rcx, 0xD1FFAB1E ; code for System.Collections.Sort`1+ComparableComparerClass[System.Collections.IntStruct]:Compare(System.Collections.IntStruct,System.Collections.IntStruct):int:this cmp qword ptr [rdi+0x18], rcx
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp edx, r8d
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=52 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; gcrRegs -[rdi] ; byrRegs -[rbp] mov r12d, -1
- jmp SHORT G_M8313_IG06 - ;; size=8 bbWeight=0.64 PerfScore 1.44 -G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref - xor r12d, r12d - cmp edx, r8d - setg r12b - ;; size=10 bbWeight=0.36 PerfScore 0.54 -G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ ;; size=6 bbWeight=0.64 PerfScore 0.16 +G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
test r12d, r12d
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13 r15] add rsp, 40 pop rbx @@ -107,20 +101,36 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M8313_IG08: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
; byrRegs +[r13 r15] mov ecx, dword ptr [r15] mov edx, dword ptr [r13] mov dword ptr [r15], edx mov dword ptr [r13], ecx
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=16 bbWeight=0.46 PerfScore 3.69
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz + xor r12d, r12d + cmp edx, r8d + setg r12b + jmp SHORT G_M8313_IG05 + ;; size=12 bbWeight=0.36 PerfScore 1.27 +G_M8313_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz + ; gcrRegs +[rdi] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this + ; gcrRegs -[rcx rdi] + ; gcr arg pop 0 + mov r12d, eax + jmp SHORT G_M8313_IG05 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13 r15] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -132,18 +142,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, b ; gcr arg pop 0 jmp G_M8313_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz - ; byrRegs -[rbp] +[r13 r15] - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this - ; gcrRegs -[rcx rdi] - ; gcr arg pop 0 - mov r12d, eax - jmp SHORT G_M8313_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 42.92, instruction count 62, allocated bytes for code 192 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 196, prolog size 16, PerfScore 42.36, instruction count 62, allocated bytes for code 196 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+4 (+2.08%) : 80647.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)

@@ -51,50 +51,44 @@ G_M8313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ebx, r8d mov esi, r9d ;; size=25 bbWeight=1 PerfScore 9.00
-G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref, isz
+G_M8313_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
; byrRegs +[rcx] mov rbp, bword ptr [rcx] ; byrRegs +[rbp] mov r14d, dword ptr [rcx+0x08] cmp ebx, esi
- je SHORT G_M8313_IG10 - ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M8313_IG11 + ;; size=15 bbWeight=1 PerfScore 5.25
G_M8313_IG03: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref, isz ; byrRegs -[rcx] cmp ebx, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, ebx lea r15, bword ptr [rbp+4*rcx] ; byrRegs +[r15] mov edx, dword ptr [r15] cmp esi, r14d
- jae SHORT G_M8313_IG09
+ jae SHORT G_M8313_IG10
mov ecx, esi lea r13, bword ptr [rbp+4*rcx] ; byrRegs +[r13] mov r8d, dword ptr [r13] mov rcx, 0xD1FFAB1E ; code for System.Collections.Sort`1+<>c[System.Collections.IntStruct]:<Array_Comparison>b__13_0(System.Collections.IntStruct,System.Collections.IntStruct):int:this cmp qword ptr [rdi+0x18], rcx
- jne SHORT G_M8313_IG11
+ jne SHORT G_M8313_IG09
cmp edx, r8d
- jge SHORT G_M8313_IG05
+ jge SHORT G_M8313_IG08
;; size=52 bbWeight=1 PerfScore 16.50
-G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+G_M8313_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
; gcrRegs -[rdi] ; byrRegs -[rbp] mov r12d, -1
- jmp SHORT G_M8313_IG06 - ;; size=8 bbWeight=0.64 PerfScore 1.43 -G_M8313_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref - xor r12d, r12d - cmp edx, r8d - setg r12b - ;; size=10 bbWeight=0.36 PerfScore 0.55 -G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
+ ;; size=6 bbWeight=0.64 PerfScore 0.16 +G_M8313_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz
test r12d, r12d
- jg SHORT G_M8313_IG08
+ jg SHORT G_M8313_IG07
;; size=5 bbWeight=1 PerfScore 1.25
-G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M8313_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r13 r15] add rsp, 40 pop rbx @@ -107,20 +101,36 @@ G_M8313_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M8313_IG08: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
+G_M8313_IG07: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, gcvars, byref, isz
; byrRegs +[r13 r15] mov ecx, dword ptr [r15] mov edx, dword ptr [r13] mov dword ptr [r15], edx mov dword ptr [r13], ecx
- jmp SHORT G_M8313_IG07
+ jmp SHORT G_M8313_IG06
;; size=16 bbWeight=0.47 PerfScore 3.73
-G_M8313_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8313_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref, isz + xor r12d, r12d + cmp edx, r8d + setg r12b + jmp SHORT G_M8313_IG05 + ;; size=12 bbWeight=0.36 PerfScore 1.28 +G_M8313_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz + ; gcrRegs +[rdi] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this + ; gcrRegs -[rcx rdi] + ; gcr arg pop 0 + mov r12d, eax + jmp SHORT G_M8313_IG05 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M8313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13 r15] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
+G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs +[rdi] ; byrRegs +[rbp] mov rcx, 0xD1FFAB1E @@ -132,18 +142,8 @@ G_M8313_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0020 {rbp}, b ; gcr arg pop 0 jmp G_M8313_IG03 ;; size=31 bbWeight=0 PerfScore 0.00
-G_M8313_IG11: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=A000 {r13 r15}, byref, isz - ; byrRegs -[rbp] +[r13 r15] - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Comparison`1[System.Collections.IntStruct]:Invoke(System.Collections.IntStruct,System.Collections.IntStruct):int:this - ; gcrRegs -[rcx rdi] - ; gcr arg pop 0 - mov r12d, eax - jmp SHORT G_M8313_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 16, PerfScore 42.95, instruction count 62, allocated bytes for code 192 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
+; Total bytes of code 196, prolog size 16, PerfScore 42.41, instruction count 62, allocated bytes for code 196 (MethodHash=3756df86) for method System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
; ============================================================ Unwind Info:

+15 (+4.50%) : 71662.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -44,12 +44,12 @@ G_M21827_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, test edx, edx jg G_M21827_IG21 ;; size=16 bbWeight=1 PerfScore 2.50
-G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, rsi ; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M21827_IG09 - ;; size=8 bbWeight=1 PerfScore 1.50
+ je G_M21827_IG14 + ;; size=12 bbWeight=1 PerfScore 1.50
G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rsi] lea rcx, bword ptr [rbx+0x18] @@ -62,90 +62,52 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, mov rdx, qword ptr [rdx] mov rax, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rax
- jne G_M21827_IG19
+ jne G_M21827_IG18
;; size=38 bbWeight=1 PerfScore 11.75 G_M21827_IG05: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdx, gword ptr [rbx+0x18] ; gcrRegs +[rdx] mov rax, 0xD1FFAB1E ; const ptr cmp rdx, gword ptr [rax]
- je SHORT G_M21827_IG08
+ je SHORT G_M21827_IG10
;; size=19 bbWeight=0.99 PerfScore 6.21
-G_M21827_IG06: ; bbWeight=0.98, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG06: ; bbWeight=0.98, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; const ptr cmp rdx, gword ptr [rax]
- jne SHORT G_M21827_IG13 - ;; size=15 bbWeight=0.98 PerfScore 4.18 -G_M21827_IG07: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M21827_IG19 + ;; size=19 bbWeight=0.98 PerfScore 4.18 +G_M21827_IG07: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] mov rdx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdx] ; gcrRegs +[rsi]
- jmp SHORT G_M21827_IG14 - ;; size=15 bbWeight=0.98 PerfScore 4.18 -G_M21827_IG08: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov rdx, 0xD1FFAB1E ; const ptr - mov rsi, gword ptr [rdx] - ; gcrRegs +[rsi] - jmp SHORT G_M21827_IG14 - ;; size=15 bbWeight=0.01 PerfScore 0.04 -G_M21827_IG09: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - mov rcx, qword ptr [rbx] - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx] - mov rdx, qword ptr [rdx+0x20] - test rdx, rdx - je SHORT G_M21827_IG11 - ;; size=19 bbWeight=0.01 PerfScore 0.06 -G_M21827_IG10: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG12 - ;; size=2 bbWeight=0.00 PerfScore 0.01 -G_M21827_IG11: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov rdx, rax - ;; size=18 bbWeight=0.00 PerfScore 0.00 -G_M21827_IG12: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rcx, rdx - call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - jmp G_M21827_IG04 - ;; size=17 bbWeight=0.01 PerfScore 0.03 -G_M21827_IG13: ; bbWeight=0.00, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, 0xD1FFAB1E ; const ptr - xor rsi, rsi - ; gcrRegs +[rsi] - mov r8, 0xD1FFAB1E ; const ptr - cmp rdx, gword ptr [rax] - cmove rsi, gword ptr [r8] - ;; size=29 bbWeight=0.00 PerfScore 0.01 -G_M21827_IG14: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx]
+ ;; size=13 bbWeight=0.98 PerfScore 2.21 +G_M21827_IG08: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- je SHORT G_M21827_IG19
+ je G_M21827_IG18
mov rdx, qword ptr [rcx+0x38] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+0x18] test rdx, rdx
- je SHORT G_M21827_IG16 - ;; size=21 bbWeight=0.99 PerfScore 8.45 -G_M21827_IG15: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG17
+ je SHORT G_M21827_IG11 + ;; size=25 bbWeight=0.99 PerfScore 8.45 +G_M21827_IG09: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG12
;; size=2 bbWeight=0.80 PerfScore 1.59
-G_M21827_IG16: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M21827_IG10: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rdx, 0xD1FFAB1E ; const ptr + mov rsi, gword ptr [rdx] + ; gcrRegs +[rsi] + jmp SHORT G_M21827_IG08 + ;; size=15 bbWeight=0.01 PerfScore 0.04 +G_M21827_IG11: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdx, rax ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M21827_IG17: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M21827_IG12: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rdx mov rdx, rsi ; gcrRegs +[rdx] @@ -161,19 +123,57 @@ G_M21827_IG17: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; byrRegs -[rcx] nop ;; size=24 bbWeight=0.99 PerfScore 3.48
-G_M21827_IG18: ; bbWeight=0.99, epilog, nogc, extend
+G_M21827_IG13: ; bbWeight=0.99, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.99 PerfScore 2.24
-G_M21827_IG19: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M21827_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + mov rcx, qword ptr [rbx] + mov rdx, qword ptr [rcx+0x38] + mov rdx, qword ptr [rdx] + mov rdx, qword ptr [rdx+0x20] + test rdx, rdx + je SHORT G_M21827_IG16 + ;; size=19 bbWeight=0.01 PerfScore 0.06 +G_M21827_IG15: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG17 + ;; size=2 bbWeight=0.00 PerfScore 0.01 +G_M21827_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov rdx, rax + ;; size=18 bbWeight=0.00 PerfScore 0.00 +G_M21827_IG17: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rcx, rdx + call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rdx, rax + ; gcrRegs +[rdx] + jmp G_M21827_IG04 + ;; size=17 bbWeight=0.01 PerfScore 0.03 +G_M21827_IG18: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rax rdx]
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=0.01 PerfScore 0.01
-G_M21827_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M21827_IG19: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rdx] + mov rax, 0xD1FFAB1E ; const ptr + xor rsi, rsi + ; gcrRegs +[rsi] + mov r8, 0xD1FFAB1E ; const ptr + cmp rdx, gword ptr [rax] + cmove rsi, gword ptr [r8] + jmp G_M21827_IG08 + ;; size=34 bbWeight=0.00 PerfScore 0.01 +G_M21827_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx rsi]
mov ecx, 22 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] ; gcr arg pop 0 @@ -189,7 +189,7 @@ G_M21827_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, jmp G_M21827_IG03 ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 333, prolog size 11, PerfScore 50.29, instruction count 85, allocated bytes for code 333 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 348, prolog size 11, PerfScore 48.32, instruction count 85, allocated bytes for code 348 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-19 (-14.39%) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRefHelperNoCacheLookup(byref,ulong,System.Object) (FullOpts)

@@ -2,20 +2,22 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 154
; No matching PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 3, 2.82) byref -> rdi single-def -; V01 arg1 [V01,T01] ( 4, 3 ) long -> rsi single-def -; V02 arg2 [V02,T00] ( 10, 6.82) ref -> rbx class-hnd <System.Object>
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> rsi single-def +; V01 arg1 [V01,T02] ( 3, 3 ) long -> rdi single-def +; V02 arg2 [V02,T00] ( 7, 7 ) ref -> rbx class-hnd <System.Object>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 0.02) ref -> rdx "CSE - conservative"
+; V07 cse0 [V07,T03] ( 3, 2.40) ref -> rdx "CSE - aggressive"
; ; Lcl frame size = 32 @@ -24,46 +26,17 @@ G_M14814_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rsi push rbx sub rsp, 32
- mov rdi, rcx - ; byrRegs +[rdi] - mov rsi, rdx
+ mov rsi, rcx + ; byrRegs +[rsi] + mov rdi, rdx
mov rbx, r8 ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 4.00
-G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+G_M14814_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
test rbx, rbx
- je SHORT G_M14814_IG06
+ jne SHORT G_M14814_IG04
;; size=5 bbWeight=1 PerfScore 1.25
-G_M14814_IG03: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - mov rcx, rsi - mov rdx, rbx - ; gcrRegs +[rdx] - call <unknown method> - ; gcrRegs -[rdx rbx] +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - test rbx, rbx - je SHORT G_M14814_IG07 - ;; size=19 bbWeight=0.99 PerfScore 2.98 -G_M14814_IG04: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref - ; gcrRegs -[rax] - mov rcx, rdi - ; byrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - ;; size=6 bbWeight=0.82 PerfScore 0.41 -G_M14814_IG05: ; bbWeight=0.82, epilog, nogc, extend - add rsp, 32 - pop rbx - pop rsi - pop rdi - jmp <unknown method> - ; gcr arg pop 0 - ;; size=12 bbWeight=0.82 PerfScore 3.07 -G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, gcvars, byref, isz - ; gcrRegs -[rdx] - ; byrRegs -[rcx]
+G_M14814_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -71,7 +44,9 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000 call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- mov rcx, rsi
+ ;; size=19 bbWeight=0.80 PerfScore 2.80 +G_M14814_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz + mov rcx, rdi
mov rdx, rbx ; gcrRegs +[rdx] call <unknown method> @@ -80,11 +55,23 @@ G_M14814_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000 mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- jne SHORT G_M14814_IG04 - ;; size=38 bbWeight=0.01 PerfScore 0.04 -G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx] - ; byrRegs -[rdi]
+ je SHORT G_M14814_IG06 + mov rcx, rsi + ; byrRegs +[rcx] + mov rdx, rbx + ; gcrRegs +[rdx] + ;; size=25 bbWeight=1 PerfScore 3.50 +G_M14814_IG05: ; bbWeight=1, epilog, nogc, extend + add rsp, 32 + pop rbx + pop rsi + pop rdi + jmp <unknown method> + ; gcr arg pop 0 + ;; size=12 bbWeight=1 PerfScore 3.75 +G_M14814_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rdx rbx] + ; byrRegs -[rcx rsi]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -104,7 +91,7 @@ G_M14814_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 16, PerfScore 11.75, instruction count 39, allocated bytes for code 132 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
+; Total bytes of code 113, prolog size 16, PerfScore 15.30, instruction count 33, allocated bytes for code 113 (MethodHash=29c6c621) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
; ============================================================ Unwind Info:

-37 (-13.21%) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)

@@ -2,122 +2,121 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 1
; No matching PGO data ; 0 inlinees with PGO data; 14 single block inlinees; 7 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 5, 4.05) long -> rcx single-def -; V01 arg1 [V01,T03] ( 6, 3.94) long -> rbx single-def -; V02 arg2 [V02,T05] ( 3, 3 ) long -> r8 single-def -; V03 loc0 [V03,T00] ( 18, 38.26) long -> rsi -; V04 loc1 [V04,T01] ( 14, 7.02) int -> r14
+; V00 arg0 [V00,T04] ( 5, 21.52) long -> rcx single-def +; V01 arg1 [V01,T05] ( 6, 19.60) long -> rbx single-def +; V02 arg2 [V02,T07] ( 3, 3 ) long -> r8 single-def +; V03 loc0 [V03,T02] ( 18, 91.25) long -> rsi +; V04 loc1 [V04,T08] ( 14, 4.44) int -> rdi
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc3 [V06,T08] ( 6, 0.49) long -> rbp -; V07 loc4 [V07,T04] ( 5, 5.66) long -> r8 -; V08 loc5 [V08,T09] ( 2, 0.31) long -> rdi
+; V06 loc3 [V06,T03] ( 6, 72.07) long -> rdx +; V07 loc4 [V07,T09] ( 5, 3.54) long -> r8 +; V08 loc5 [V08,T06] ( 2, 17.38) long -> rax
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V12 tmp3 [V12,T11] ( 6, 0 ) long -> rbp "Inlining Arg" -; V13 tmp4 [V13,T12] ( 5, 0 ) byref -> rax "Inlining Arg"
+; V12 tmp3 [V12,T00] ( 6,203.21) long -> rdx "Inlining Arg" +; V13 tmp4 [V13,T01] ( 5,169.35) byref -> r10 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp6 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp7 [V16,T06] ( 3, 4.43) byref -> rax single-def "Inlining Arg"
+; V16 tmp7 [V16,T11] ( 3, 1.01) byref -> rdx single-def "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp9 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T13] ( 3, 0 ) byref -> rcx "Inlining Arg"
+; V19 tmp10 [V19,T10] ( 3, 1.17) byref -> rcx "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp14 [V23,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V24 cse0 [V24,T10] ( 2, 0.00) ref -> rdx "CSE - conservative"
+;* V23 tmp14 [V23,T12] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V24 cse0 [V24,T13] ( 2, 0.85) ref -> rdx "CSE - aggressive"
; ; Lcl frame size = 32 G_M6063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi
- push rbp
push rbx sub rsp, 32 mov rbx, rdx
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=10 bbWeight=1 PerfScore 3.50
G_M6063_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz xor esi, esi cmp r8, 4
- jae SHORT G_M6063_IG12
+ jae SHORT G_M6063_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M6063_IG03: ; bbWeight=2.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6063_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r8b, 2
- je SHORT G_M6063_IG06 - ;; size=6 bbWeight=2.80 PerfScore 3.50 -G_M6063_IG04: ; bbWeight=1.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r14d, dword ptr [rcx+2*rsi] - test r14d, 0xD1FFAB1E - jne SHORT G_M6063_IG10 - ;; size=13 bbWeight=1.80 PerfScore 5.85 -G_M6063_IG05: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rax, [rsi+rbx] - mov byte ptr [rax], r14b - shr r14d, 16 - mov byte ptr [rax+0x01], r14b - add rsi, 2 - ;; size=19 bbWeight=0.74 PerfScore 2.40 -G_M6063_IG06: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - test r8b, 1
+ je SHORT G_M6063_IG13 + ;; size=6 bbWeight=0.62 PerfScore 0.78 +G_M6063_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M6063_IG09 + ;; size=2 bbWeight=0.32 PerfScore 0.65 +G_M6063_IG05: ; bbWeight=0.45, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rax, [r8-0x04] + ;; size=4 bbWeight=0.45 PerfScore 0.22 +G_M6063_IG06: ; bbWeight=18.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdx, qword ptr [rcx+2*rsi] + mov r10, 0xD1FFAB1E + test rdx, r10
jne G_M6063_IG18
- ;; size=10 bbWeight=0.55 PerfScore 0.69 -G_M6063_IG07: ; bbWeight=29.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=18.82 PerfScore 65.86 +G_M6063_IG07: ; bbWeight=16.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lea r10, [rsi+rbx] + mov byte ptr [r10], dl + shr rdx, 16 + mov byte ptr [r10+0x01], dl + shr rdx, 16 + mov byte ptr [r10+0x02], dl + shr rdx, 16 + mov byte ptr [r10+0x03], dl + add rsi, 4 + cmp rax, rsi + jae SHORT G_M6063_IG06 + ;; size=40 bbWeight=16.93 PerfScore 127.01 +G_M6063_IG08: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M6063_IG03 + ;; size=2 bbWeight=0.62 PerfScore 1.25 +G_M6063_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov edi, dword ptr [rcx+2*rsi] + test edi, 0xD1FFAB1E + je SHORT G_M6063_IG12 + ;; size=11 bbWeight=0.32 PerfScore 1.05 +G_M6063_IG10: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test edi, 0xD1FFAB1E + jne SHORT G_M6063_IG17 + ;; size=8 bbWeight=0.53 PerfScore 0.66 +G_M6063_IG11: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M6063_IG16 + ;; size=2 bbWeight=0.43 PerfScore 0.85 +G_M6063_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rdx, [rsi+rbx] + mov byte ptr [rdx], dil + mov eax, edi + shr eax, 16 + mov byte ptr [rdx+0x01], al + add rsi, 2 + ;; size=19 bbWeight=0.17 PerfScore 0.59 +G_M6063_IG13: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test r8b, 1 + jne SHORT G_M6063_IG20 + ;; size=6 bbWeight=0.47 PerfScore 0.59 +G_M6063_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, rsi
- ;; size=3 bbWeight=29.40 PerfScore 7.35 -G_M6063_IG08: ; bbWeight=29.40, epilog, nogc, extend
+ ;; size=3 bbWeight=1 PerfScore 0.25 +G_M6063_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx
- pop rbp
pop rsi pop rdi
- pop r14
ret
- ;; size=11 bbWeight=29.40 PerfScore 110.25 -G_M6063_IG09: ; bbWeight=1.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov byte ptr [rsi+rbx], r14b - inc rsi - jmp SHORT G_M6063_IG07 - ;; size=9 bbWeight=1.20 PerfScore 3.90 -G_M6063_IG10: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test r14d, 0xD1FFAB1E - jne SHORT G_M6063_IG16 - ;; size=9 bbWeight=0.37 PerfScore 0.46 -G_M6063_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M6063_IG15 - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M6063_IG12: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rdi, [r8-0x04] - ;; size=4 bbWeight=0.31 PerfScore 0.15 -G_M6063_IG13: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rbp, qword ptr [rcx+2*rsi] - mov rax, 0xD1FFAB1E - test rbp, rax - je SHORT G_M6063_IG19 - ;; size=19 bbWeight=0.25 PerfScore 0.86 -G_M6063_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r14d, ebp - test r14d, 0xD1FFAB1E - jne SHORT G_M6063_IG10 - lea rcx, [rsi+rbx] - mov byte ptr [rcx], r14b - mov r8d, r14d - shr r8d, 16 - mov byte ptr [rcx+0x01], r8b - mov r14, rbp - shr r14, 32 - add rsi, 2 - jmp SHORT G_M6063_IG10 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M6063_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=1 PerfScore 2.75 +G_M6063_IG16: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -125,37 +124,39 @@ G_M6063_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=26 bbWeight=0.00 PerfScore 0.01 -G_M6063_IG16: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test r14d, 0xFF80 - je SHORT G_M6063_IG09 - ;; size=9 bbWeight=0.37 PerfScore 0.46 -G_M6063_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - jmp G_M6063_IG07 - ;; size=5 bbWeight=0.00 PerfScore 0.00 -G_M6063_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movzx r14, word ptr [rcx+2*rsi] - cmp r14d, 127 - ja G_M6063_IG07 - jmp G_M6063_IG09 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M6063_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rax, [rsi+rbx] - mov byte ptr [rax], bpl - shr rbp, 16 - mov byte ptr [rax+0x01], bpl - shr rbp, 16 - mov byte ptr [rax+0x02], bpl - mov rdx, rbp - shr rdx, 16 - mov byte ptr [rax+0x03], dl - add rsi, 4 - cmp rdi, rsi - jae G_M6063_IG13 - jmp G_M6063_IG03 - ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0.43 PerfScore 1.49 +G_M6063_IG17: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test edi, 0xFF80 + jne SHORT G_M6063_IG14 + jmp SHORT G_M6063_IG21 + ;; size=10 bbWeight=0.53 PerfScore 1.73 +G_M6063_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov edi, edx + test edi, 0xD1FFAB1E + jne SHORT G_M6063_IG10 + ;; size=10 bbWeight=0.38 PerfScore 0.56 +G_M6063_IG19: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + lea rcx, [rsi+rbx] + mov byte ptr [rcx], dil + shr edi, 16 + mov byte ptr [rcx+0x01], dil + mov rdi, rdx
...

-24 (-9.96%) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)

@@ -2,24 +2,27 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; partially interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 3
; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 3, 98 ) long -> rsi single-def -; V01 arg1 [V01,T06] ( 3, 98 ) long -> rdi single-def -; V02 arg2 [V02,T04] ( 5,100 ) int -> rbx single-def -; V03 loc0 [V03,T01] ( 6,481 ) int -> r14
+; V00 arg0 [V00,T06] ( 3, 74.00) long -> rsi single-def +; V01 arg1 [V01,T07] ( 3, 74.00) long -> rdi single-def +; V02 arg2 [V02,T05] ( 5, 76.00) int -> rbx single-def +; V03 loc0 [V03,T01] ( 6,361.00) int -> r14
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V05 tmp1 [V05,T09] ( 3, 6.00) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 tmp3 [V07,T00] ( 3,576 ) ref -> r15 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp4 [V08,T02] ( 2,384 ) ref -> r13 class-hnd exact "Inlining Arg" <System.String> -; V09 tmp5 [V09,T03] ( 2,384 ) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
+; V07 tmp3 [V07,T00] ( 3,432.00) ref -> r15 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp4 [V08,T02] ( 2,288.00) ref -> r13 class-hnd exact "Inlining Arg" <System.String> +; V09 tmp5 [V09,T03] ( 2,288.00) ref -> r8 class-hnd exact "Inlining Arg" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V11 cse0 [V11,T07] ( 4, 99 ) long -> rbp "CSE - aggressive"
+; V11 cse0 [V11,T08] ( 4, 75.00) long -> rbp "CSE - aggressive" +; V12 cse1 [V12,T04] ( 5, 88.00) ref -> rdx multi-def "CSE - aggressive"
; ; Lcl frame size = 32 @@ -36,12 +39,21 @@ G_M44736_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdi, rdx mov ebx, r8d ;; size=23 bbWeight=1 PerfScore 8.00
-G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44736_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbp, 0xD1FFAB1E ; data for <unknown class>:<unknown field> cmp gword ptr [rbp], 0
- jne G_M44736_IG07 - ;; size=21 bbWeight=1 PerfScore 4.25 -G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M44736_IG04 + ;; size=17 bbWeight=1 PerfScore 4.25 +G_M44736_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=26 bbWeight=0.80 PerfScore 2.80 +G_M44736_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -63,9 +75,9 @@ G_M44736_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx r14] xor r14d, r14d test ebx, ebx
- jle G_M44736_IG08 - ;; size=54 bbWeight=1 PerfScore 8.25 -G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M44736_IG08 + ;; size=50 bbWeight=1.00 PerfScore 8.25 +G_M44736_IG05: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r15, gword ptr [rbp] ; gcrRegs +[r15] movsxd rcx, r14d @@ -91,35 +103,23 @@ G_M44736_IG04: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rcx rdx r8 r13 r15] ; gcr arg pop 0 test eax, eax
- je SHORT G_M44736_IG06 - ;; size=59 bbWeight=96 PerfScore 1632.00 -G_M44736_IG05: ; bbWeight=96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M44736_IG07 + ;; size=59 bbWeight=72.00 PerfScore 1224.00 +G_M44736_IG06: ; bbWeight=28.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + mov rcx, rdx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=19 bbWeight=28.80 PerfScore 100.80 +G_M44736_IG07: ; bbWeight=72.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc r14d
- cmp ebx, r14d - jle SHORT G_M44736_IG08 - jmp SHORT G_M44736_IG04 - ;; size=10 bbWeight=96 PerfScore 336.00 -G_M44736_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - jmp SHORT G_M44736_IG05 - ;; size=28 bbWeight=0.32 PerfScore 1.74 -G_M44736_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - jmp G_M44736_IG03 - ;; size=31 bbWeight=0.01 PerfScore 0.04 -G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ cmp r14d, ebx + jl SHORT G_M44736_IG05 + ;; size=8 bbWeight=72.00 PerfScore 108.00 +G_M44736_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 32 pop rbx pop rbp @@ -129,9 +129,9 @@ G_M44736_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r14 pop r15 ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=1 PerfScore 4.75
-; Total bytes of code 241, prolog size 14, PerfScore 1990.27, instruction count 64, allocated bytes for code 241 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
+; Total bytes of code 217, prolog size 14, PerfScore 1460.85, instruction count 61, allocated bytes for code 217 (MethodHash=16ec513f) for method System.AppContext:Setup(ulong,ulong,int) (FullOpts)
; ============================================================ Unwind Info:

+11 (+5.29%) : 277826.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)

@@ -2,22 +2,25 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 4
; No matching PGO data ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 3, 2 ) ref -> rcx this class-hnd single-def <System.Text.DecoderReplacementFallback> -; V01 arg1 [V01,T00] ( 7, 4 ) ref -> rdx class-hnd single-def <System.String> -; V02 loc0 [V02,T02] ( 7, 1 ) ubyte -> rbx -;* V03 loc1 [V03,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String> -; V04 loc2 [V04,T03] ( 5, 1 ) int -> rsi -; V05 loc3 [V05,T06] ( 3, 0 ) ushort -> rax
+; V00 this [V00,T05] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Text.DecoderReplacementFallback> +; V01 arg1 [V01,T02] ( 6, 42.89) ref -> rdx class-hnd single-def <System.String> +; V02 loc0 [V02,T04] ( 7, 29.81) ubyte -> rax +;* V03 loc1 [V03,T06] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String> +; V04 loc2 [V04,T00] ( 5,165.21) int -> r8 +; V05 loc3 [V05,T01] ( 3, 85.64) ushort -> r9
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V08 tmp2 [V08,T07] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V09 tmp3 [V09,T08] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V07 tmp1 [V07,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V08 tmp2 [V08,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V09 tmp3 [V09,T09] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V10 cse0 [V10,T03] ( 3, 44.11) int -> r10 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -29,13 +32,47 @@ G_M54099_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M54099_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx] test rdx, rdx
- je SHORT G_M54099_IG05 - xor ebx, ebx - xor esi, esi - cmp dword ptr [rdx+0x08], 0 - jg SHORT G_M54099_IG06 - ;; size=15 bbWeight=1 PerfScore 5.75 -G_M54099_IG03: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
+ je SHORT G_M54099_IG14 + xor eax, eax + xor r8d, r8d + mov r10d, dword ptr [rdx+0x08] + test r10d, r10d + jle SHORT G_M54099_IG10 + ;; size=19 bbWeight=1 PerfScore 5.00 +G_M54099_IG03: ; bbWeight=37.89, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov r9d, r8d + movzx r9, word ptr [rdx+2*r9+0x0C] + lea r11d, [r9-0xD800] + cmp r11d, 0x7FF + ja SHORT G_M54099_IG07 + ;; size=25 bbWeight=37.89 PerfScore 151.58 +G_M54099_IG04: ; bbWeight=9.85, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + add r9d, -0xD800 + cmp r9d, 0x3FF + ja SHORT G_M54099_IG12 + ;; size=16 bbWeight=9.85 PerfScore 14.78 +G_M54099_IG05: ; bbWeight=5.12, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + test eax, eax + jne SHORT G_M54099_IG09 + ;; size=4 bbWeight=5.12 PerfScore 6.40 +G_M54099_IG06: ; bbWeight=4.61, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov eax, 1 + jmp SHORT G_M54099_IG08 + ;; size=7 bbWeight=4.61 PerfScore 10.37 +G_M54099_IG07: ; bbWeight=9.09, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + test eax, eax + jne SHORT G_M54099_IG09 + ;; size=4 bbWeight=9.09 PerfScore 11.37 +G_M54099_IG08: ; bbWeight=42.11, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + inc r8d + cmp r10d, r8d + jg SHORT G_M54099_IG03 + ;; size=8 bbWeight=42.11 PerfScore 63.16 +G_M54099_IG09: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + test eax, eax + jne SHORT G_M54099_IG15 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M54099_IG10: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
lea rcx, bword ptr [rcx+0x08] ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -43,14 +80,24 @@ G_M54099_IG03: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, ; gcrRegs -[rdx] ; byrRegs -[rcx] nop
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M54099_IG04: ; bbWeight=0, epilog, nogc, extend
+ ;; size=10 bbWeight=1 PerfScore 1.75 +G_M54099_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret
- ;; size=7 bbWeight=0 PerfScore 0.00 -G_M54099_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=7 bbWeight=1 PerfScore 2.25 +G_M54099_IG12: ; bbWeight=4.73, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx rdx] + test eax, eax + je SHORT G_M54099_IG15 + ;; size=4 bbWeight=4.73 PerfScore 5.91 +G_M54099_IG13: ; bbWeight=4.26, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + xor eax, eax + jmp SHORT G_M54099_IG08 + ;; size=4 bbWeight=4.26 PerfScore 9.58 +G_M54099_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rdx]
mov ecx, 0x27783 mov rdx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -63,42 +110,7 @@ G_M54099_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 int3 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M54099_IG06: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rcx rdx] - mov eax, esi - movzx rax, word ptr [rdx+2*rax+0x0C] - lea r8d, [rax-0xD800] - cmp r8d, 0x7FF - ja SHORT G_M54099_IG08 - add eax, -0xD800 - cmp eax, 0x3FF - ja SHORT G_M54099_IG07 - test ebx, ebx - jne SHORT G_M54099_IG10 - mov ebx, 1 - jmp SHORT G_M54099_IG09 - ;; size=46 bbWeight=0 PerfScore 0.00 -G_M54099_IG07: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - je SHORT G_M54099_IG11 - xor ebx, ebx - jmp SHORT G_M54099_IG09 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M54099_IG08: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - jne SHORT G_M54099_IG10 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M54099_IG09: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - inc esi - cmp dword ptr [rdx+0x08], esi - jg SHORT G_M54099_IG06 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M54099_IG10: ; bbWeight=0, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz - test ebx, ebx - je SHORT G_M54099_IG03 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M54099_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rdx]
+G_M54099_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -130,7 +142,7 @@ G_M54099_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=71 bbWeight=0 PerfScore 0.00
-; Total bytes of code 208, prolog size 6, PerfScore 8.00, instruction count 60, allocated bytes for code 208 (MethodHash=1d492cac) for method System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
+; Total bytes of code 219, prolog size 6, PerfScore 285.65, instruction count 61, allocated bytes for code 219 (MethodHash=1d492cac) for method System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
; ============================================================ Unwind Info:

+19 (+8.23%) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)

@@ -2,114 +2,52 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; fully interruptible
+; with Unknown PGO: edge weights are invalid, and fgCalledCount is 5
; No matching PGO data ; 0 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 16,463.80) long -> rsi -; V01 arg1 [V01,T00] ( 9,535.41) long -> rbx -; V02 loc0 [V02,T04] ( 2, 1 ) long -> rdi -; V03 loc1 [V03,T02] ( 8,144 ) int -> rbp -; V04 loc2 [V04,T06] ( 3, 0 ) long -> rbp
+; V00 arg0 [V00,T00] ( 16,166.58) long -> rbx +; V01 arg1 [V01,T01] ( 9,131.04) long -> rsi +; V02 loc0 [V02,T05] ( 2, 2 ) long -> rdi +; V03 loc1 [V03,T02] ( 8, 78.27) int -> rbp +; V04 loc2 [V04,T04] ( 3, 3 ) long -> rbx
;* V05 loc3 [V05 ] ( 0, 0 ) long -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) long -> zero-ref ;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref ;* V08 loc6 [V08 ] ( 0, 0 ) long -> zero-ref ;* V09 loc7 [V09 ] ( 0, 0 ) long -> zero-ref ;* V10 loc8 [V10 ] ( 0, 0 ) long -> zero-ref
-; V11 loc9 [V11,T03] ( 3,144 ) int -> rcx
+; V11 loc9 [V11,T03] ( 3, 76.04) int -> r14
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V13 tmp1 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp5 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V18 tmp6 [V18,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V19 cse0 [V19,T05] ( 7, 0.02) ref -> rdx multi-def "CSE - conservative"
+;* V18 tmp6 [V18,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M42618_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi push rsi push rbp push rbx
- sub rsp, 40 - mov rsi, rcx - mov rbx, rdx - ;; size=14 bbWeight=1 PerfScore 4.75
+ sub rsp, 32 + mov rbx, rcx + mov rsi, rdx + ;; size=16 bbWeight=1 PerfScore 5.75
G_M42618_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, rsi - test rbx, rbx - jl SHORT G_M42618_IG10
+ mov rdi, rbx + test rsi, rsi + jge SHORT G_M42618_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M42618_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp rbx, 4 - jb SHORT G_M42618_IG06 - ;; size=6 bbWeight=0.01 PerfScore 0.01 -G_M42618_IG04: ; bbWeight=72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov ebp, dword ptr [rsi] - mov ecx, dword ptr [rsi+0x04] - mov edx, ecx - or edx, ebp - test edx, 0xD1FFAB1E - jne SHORT G_M42618_IG11 - ;; size=17 bbWeight=72 PerfScore 414.00 -G_M42618_IG05: ; bbWeight=158.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add rsi, 8 - add rbx, -4 - cmp rbx, 4 - jae SHORT G_M42618_IG04 - ;; size=14 bbWeight=158.40 PerfScore 277.20 -G_M42618_IG06: ; bbWeight=9.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test bl, 2 - jne SHORT G_M42618_IG09 - ;; size=5 bbWeight=9.60 PerfScore 12.00 -G_M42618_IG07: ; bbWeight=47.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test bl, 1 - je SHORT G_M42618_IG14 - ;; size=5 bbWeight=47.60 PerfScore 59.50 -G_M42618_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M42618_IG12 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M42618_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov ebp, dword ptr [rsi] - test ebp, 0xD1FFAB1E - jne SHORT G_M42618_IG17 - add rsi, 4 - jmp SHORT G_M42618_IG07 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M42618_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - mov rcx, rdx - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - jmp SHORT G_M42618_IG03 - ;; size=21 bbWeight=0.01 PerfScore 0.04 -G_M42618_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test ebp, 0xD1FFAB1E - jne SHORT G_M42618_IG17 - mov ebp, ecx - add rsi, 4 - jmp SHORT G_M42618_IG17 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M42618_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp word ptr [rsi], 127 - ja SHORT G_M42618_IG14 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M42618_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add rsi, 2 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M42618_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rbp, rsi - sub rbp, rdi - test bpl, 1 - je SHORT G_M42618_IG15
+G_M42618_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -117,37 +55,111 @@ G_M42618_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- ;; size=38 bbWeight=0 PerfScore 0.00 -G_M42618_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, rbp
+ ;; size=26 bbWeight=0.80 PerfScore 2.80 +G_M42618_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp rsi, 4 + jb SHORT G_M42618_IG07 + ;; size=6 bbWeight=0.80 PerfScore 1.00 +G_M42618_IG05: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ebp, dword ptr [rbx] + mov r14d, dword ptr [rbx+0x04] + mov ecx, r14d + or ecx, ebp + test ecx, 0xD1FFAB1E + jne G_M42618_IG20 + ;; size=23 bbWeight=37.89 PerfScore 217.89 +G_M42618_IG06: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add rbx, 8 + add rsi, -4 + cmp rsi, 4 + jae SHORT G_M42618_IG05 + ;; size=14 bbWeight=42.11 PerfScore 73.68 +G_M42618_IG07: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test sil, 2 + jne SHORT G_M42618_IG11 + ;; size=6 bbWeight=0.53 PerfScore 0.66 +G_M42618_IG08: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test sil, 1 + je SHORT G_M42618_IG15 + ;; size=6 bbWeight=0.39 PerfScore 0.49 +G_M42618_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp word ptr [rbx], 127 + ja SHORT G_M42618_IG15 + ;; size=6 bbWeight=0.32 PerfScore 1.26 +G_M42618_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M42618_IG19 + ;; size=2 bbWeight=0.25 PerfScore 0.51 +G_M42618_IG11: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov ebp, dword ptr [rbx] + test ebp, 0xD1FFAB1E + je SHORT G_M42618_IG22 + ;; size=10 bbWeight=0.27 PerfScore 0.89 +G_M42618_IG12: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test ebp, 0xD1FFAB1E + jne SHORT G_M42618_IG14 + ;; size=8 bbWeight=0.61 PerfScore 0.76 +G_M42618_IG13: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=26 bbWeight=0.48 PerfScore 1.69 +G_M42618_IG14: ; bbWeight=0.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test ebp, 0xFF80 + je SHORT G_M42618_IG19 + ;; size=8 bbWeight=0.61 PerfScore 0.76 +G_M42618_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sub rbx, rdi + test bl, 1 + je SHORT G_M42618_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M42618_IG16: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, 0xD1FFAB1E + ; gcrRegs +[rcx] + mov rdx, 0xD1FFAB1E + ; gcrRegs +[rdx] + call [<unknown method>] + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + ;; size=26 bbWeight=0.80 PerfScore 2.80 +G_M42618_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rax, rbx
shr rax, 1
- ;; size=6 bbWeight=0 PerfScore 0.00 -G_M42618_IG16: ; bbWeight=0, epilog, nogc, extend - add rsp, 40
+ ;; size=6 bbWeight=1 PerfScore 0.75 +G_M42618_IG18: ; bbWeight=1, epilog, nogc, extend + add rsp, 32
pop rbx pop rbp pop rsi pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=0 PerfScore 0.00 -G_M42618_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 3.75 +G_M42618_IG19: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + add rbx, 2 + jmp SHORT G_M42618_IG15 + ;; size=6 bbWeight=0.61 PerfScore 1.36 +G_M42618_IG20: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test ebp, 0xD1FFAB1E
- jne SHORT G_M42618_IG18 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M42618_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test ebp, 0xFF80 - je SHORT G_M42618_IG13 - jmp SHORT G_M42618_IG14 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jne SHORT G_M42618_IG12
...

+17 (+10.30%) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalListInOrder(System.Canon[]):this (FullOpts)

@@ -2,29 +2,35 @@ ; Emitting BLENDED_CODE for generic X64 - Windows ; FullOpts code ; optimized code
+; optimized using Unknown PGO
; rsp based frame ; fully interruptible
+; with Unknown PGO: edge weights are valid, and fgCalledCount is 112
; No matching PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 5, 29.84) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 8, 3122.62) ref -> rbx class-hnd single-def <System.__Canon[]> -; V02 loc0 [V02,T07] ( 3, 3.62) ref -> rdi class-hnd single-def <System.__Canon[]> -; V03 loc1 [V03,T06] ( 4, 21.61) ref -> rdi class-hnd single-def <System.__Canon[]> -; V04 loc2 [V04,T05] ( 5, 21.98) int -> rbp -; V05 loc3 [V05,T02] ( 4, 3112.71) ref -> r14 class-hnd <System.__Canon> -; V06 loc4 [V06,T03] ( 6, 3093.79) int -> r15 -;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> -; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V10 tmp2 [V10,T00] ( 3,18468 ) ref -> rcx "argument with side effect"
+; V00 this [V00,T08] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 7, 553.71) ref -> rbx class-hnd single-def <System.__Canon[]> +; V02 loc0 [V02,T09] ( 3, 2.80) ref -> rdi class-hnd single-def <System.__Canon[]> +; V03 loc1 [V03,T07] ( 3, 31.92) ref -> rdi class-hnd single-def <System.__Canon[]> +; V04 loc2 [V04,T05] ( 5, 132.17) int -> rbp +; V05 loc3 [V05,T03] ( 4, 584.06) ref -> r15 class-hnd <System.__Canon> +; V06 loc4 [V06,T01] ( 6,2273.92) int -> r13 +;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> +; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +;* V09 tmp1 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V10 tmp2 [V10,T00] ( 3,3101.78) ref -> rcx "argument with side effect" +; V11 cse0 [V11,T02] ( 3, 628.97) int -> r12 "CSE - aggressive" +; V12 cse1 [V12,T06] ( 3, 35.28) int -> r14 "CSE - aggressive"
; ; Lcl frame size = 40 G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 push r14
+ push r13 + push r12
push rdi push rsi push rbp @@ -34,57 +40,37 @@ G_M50755_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 6.75
+ ;; size=22 bbWeight=1 PerfScore 8.75
G_M50755_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [rsi+0x08] ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M50755_IG05
+ je SHORT G_M50755_IG09
;; size=9 bbWeight=1 PerfScore 3.25
-G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - lea rcx, bword ptr [rsi+0x08] - ; byrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rdx rbx rsi] - ; byrRegs -[rcx] - nop - ;; size=13 bbWeight=0.80 PerfScore 1.61 -G_M50755_IG04: ; bbWeight=0.80, epilog, nogc, extend - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - pop r15 - ret - ;; size=13 bbWeight=0.80 PerfScore 3.42 -G_M50755_IG05: ; bbWeight=1.62, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rsi rdi]
+G_M50755_IG03: ; bbWeight=0.80, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor ebp, ebp
- cmp dword ptr [rdi+0x08], 0 - jle SHORT G_M50755_IG11 - ;; size=8 bbWeight=1.62 PerfScore 6.91 -G_M50755_IG06: ; bbWeight=17.36, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [rdi+0x08] + test r14d, r14d + jle SHORT G_M50755_IG13 + ;; size=11 bbWeight=0.80 PerfScore 2.80 +G_M50755_IG04: ; bbWeight=30.32, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
- mov r14, gword ptr [rdi+8*rcx+0x10] - ; gcrRegs +[r14] - test r14, r14 - je SHORT G_M50755_IG11 - ;; size=12 bbWeight=17.36 PerfScore 60.75 -G_M50755_IG07: ; bbWeight=15.79, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz - xor r15d, r15d - cmp dword ptr [rbx+0x08], 0 - jle SHORT G_M50755_IG10 - ;; size=9 bbWeight=15.79 PerfScore 67.09 -G_M50755_IG08: ; bbWeight=3078, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz - mov ecx, r15d
+ mov r15, gword ptr [rdi+8*rcx+0x10] + ; gcrRegs +[r15] + test r15, r15 + je SHORT G_M50755_IG13 + ;; size=12 bbWeight=30.32 PerfScore 106.11 +G_M50755_IG05: ; bbWeight=27.28, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz + xor r13d, r13d + mov r12d, dword ptr [rbx+0x08] + test r12d, r12d + jle SHORT G_M50755_IG12 + ;; size=12 bbWeight=27.28 PerfScore 95.49 +G_M50755_IG06: ; bbWeight=516.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz + mov ecx, r13d
mov rcx, gword ptr [rbx+8*rcx+0x10] ; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, r15
; gcrRegs +[rdx] mov rax, qword ptr [rcx] mov rax, qword ptr [rax+0x48] @@ -92,24 +78,18 @@ G_M50755_IG08: ; bbWeight=3078, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe ; gcrRegs -[rcx rdx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M50755_IG13 - ;; size=25 bbWeight=3078 PerfScore 33088.50 -G_M50755_IG09: ; bbWeight=0, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref - movsxd rdx, r15d - mov rcx, rbx - ; gcrRegs +[rcx] - mov r8, r14 - ; gcrRegs +[r8] - call CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[rcx r8 r14] - ; gcr arg pop 0 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M50755_IG10: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz - inc ebp - cmp ebp, dword ptr [rdi+0x08] - jl SHORT G_M50755_IG06 - ;; size=7 bbWeight=1 PerfScore 4.25 -G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M50755_IG11 + ;; size=25 bbWeight=516.96 PerfScore 5557.36 +G_M50755_IG07: ; bbWeight=574.40, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz + inc r13d + cmp r12d, r13d + jg SHORT G_M50755_IG06 + ;; size=8 bbWeight=574.40 PerfScore 861.61 +G_M50755_IG08: ; bbWeight=1.80, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + jmp SHORT G_M50755_IG12 + ;; size=2 bbWeight=1.80 PerfScore 3.59 +G_M50755_IG09: ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx] @@ -119,26 +99,60 @@ G_M50755_IG11: ; bbWeight=26.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx rbx rsi] ; byrRegs -[rcx] nop
- ;; size=13 bbWeight=26.04 PerfScore 52.07 -G_M50755_IG12: ; bbWeight=26.04, epilog, nogc, extend
+ ;; size=13 bbWeight=0.20 PerfScore 0.40 +G_M50755_IG10: ; bbWeight=0.20, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp pop rsi pop rdi
+ pop r12 + pop r13
pop r14 pop r15 ret
- ;; size=13 bbWeight=26.04 PerfScore 110.65 -G_M50755_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rsi rdi r14] - inc r15d - cmp r15d, dword ptr [rbx+0x08] - jl SHORT G_M50755_IG08 - jmp SHORT G_M50755_IG10 - ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0.20 PerfScore 1.05 +G_M50755_IG11: ; bbWeight=6.46, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx rsi rdi r15] + movsxd rdx, r13d + mov rcx, rbx + ; gcrRegs +[rcx] + mov r8, r15 + ; gcrRegs +[r8] + call CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[rcx r8 r15] + ; gcr arg pop 0 + ;; size=14 bbWeight=6.46 PerfScore 11.31 +G_M50755_IG12: ; bbWeight=33.68, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + inc ebp + cmp r14d, ebp + jg SHORT G_M50755_IG04 + ;; size=7 bbWeight=33.68 PerfScore 50.53 +G_M50755_IG13: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + lea rcx, bword ptr [rsi+0x08] + ; byrRegs +[rcx] + mov rdx, rbx + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx rbx rsi] + ; byrRegs -[rcx] + nop + ;; size=13 bbWeight=0.80 PerfScore 1.60 +G_M50755_IG14: ; bbWeight=0.80, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + pop r12 + pop r13 + pop r14 + pop r15 + ret + ;; size=17 bbWeight=0.80 PerfScore 4.20
-; Total bytes of code 165, prolog size 18, PerfScore 33405.24, instruction count 65, allocated bytes for code 165 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
+; Total bytes of code 182, prolog size 22, PerfScore 6708.04, instruction count 73, allocated bytes for code 182 (MethodHash=8aec39bc) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
; ============================================================ Unwind Info: @@ -146,15 +160,17 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x0C - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x10 + CountOfUnwindCodes: 9
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
...

libraries_tests.run.windows.x64.Release.mch

-16 (-6.35%) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray1[System.Nullable1[System.ValueTuple2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1421
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1421
; 2 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -66,7 +66,7 @@ G_M15999_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, gword ptr [rsp+0x80] ; gcrRegs +[r15] ;; size=47 bbWeight=1 PerfScore 11.00
-G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx] mov rax, rdx ; gcrRegs +[rax] @@ -75,16 +75,16 @@ G_M15999_IG02: ; bbWeight=1, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15} mov rcx, rsi ; gcrRegs +[rcx] test rcx, rcx
- je G_M15999_IG10 - ;; size=29 bbWeight=1 PerfScore 4.75 -G_M15999_IG03: ; bbWeight=0.98, gcrefRegs=C0EB {rax rcx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+ je SHORT G_M15999_IG06 + ;; size=25 bbWeight=1 PerfScore 4.75 +G_M15999_IG03: ; bbWeight=0.98, gcrefRegs=C0EB {rax rcx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx] xor edx, edx mov ecx, dword ptr [rcx+0x08] ; gcrRegs -[rcx] test ecx, ecx
- jle G_M15999_IG10 - ;; size=13 bbWeight=0.98 PerfScore 3.44
+ jle SHORT G_M15999_IG06 + ;; size=9 bbWeight=0.98 PerfScore 3.44
G_M15999_IG04: ; bbWeight=0.62, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref mov r8d, dword ptr [rsi+0x08] ;; size=4 bbWeight=0.62 PerfScore 1.23 @@ -93,17 +93,21 @@ G_M15999_IG05: ; bbWeight=1.64, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r mov r8, gword ptr [rsi+8*r8+0x10] ; gcrRegs +[r8] test byte ptr [r8+0x10], 1
- jne G_M15999_IG14
+ jne SHORT G_M15999_IG11
inc edx cmp edx, ecx jl SHORT G_M15999_IG05
- ;; size=25 bbWeight=1.64 PerfScore 12.74 -G_M15999_IG06: ; bbWeight=0.98, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=21 bbWeight=1.64 PerfScore 12.74 +G_M15999_IG06: ; bbWeight=0.98, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
- jmp SHORT G_M15999_IG10 - ;; size=2 bbWeight=0.98 PerfScore 1.96 -G_M15999_IG07: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rdx]
+ xor r13d, r13d + ;; size=3 bbWeight=0.98 PerfScore 0.25 +G_M15999_IG07: ; bbWeight=1, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref + mov rdx, rax + ; gcrRegs +[rdx] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax]
mov byte ptr [rbx+0x12], 162 lea rcx, bword ptr [rbx+0x08] ; byrRegs +[rcx] @@ -113,7 +117,7 @@ G_M15999_IG07: ; bbWeight=1.00, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r test r13b, r13b jne SHORT G_M15999_IG13 ;; size=18 bbWeight=1.00 PerfScore 3.75
-G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M15999_IG09: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref
xor rcx, rcx ; gcrRegs +[rcx] mov gword ptr [rbx+0x18], rcx @@ -155,7 +159,7 @@ G_M15999_IG08: ; bbWeight=1.00, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, ; byrRegs -[rcx] nop ;; size=67 bbWeight=1.00 PerfScore 10.25
-G_M15999_IG09: ; bbWeight=1.00, epilog, nogc, extend
+G_M15999_IG10: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -166,32 +170,23 @@ G_M15999_IG09: ; bbWeight=1.00, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=1.00 PerfScore 4.75
-G_M15999_IG10: ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M15999_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rbx rbp rsi rdi r14-r15]
- xor r13d, r13d - ;; size=3 bbWeight=0.98 PerfScore 0.25 -G_M15999_IG11: ; bbWeight=1, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz - mov rdx, rax - ; gcrRegs +[rdx] - jmp SHORT G_M15999_IG07 - ;; size=5 bbWeight=1 PerfScore 2.25 -G_M15999_IG12: ; bbWeight=0, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax]
mov r13d, 1 jmp SHORT G_M15999_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
+G_M15999_IG12: ; bbWeight=0, gcrefRegs=C0EC {rdx rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rdx] + mov r13d, 1 + jmp SHORT G_M15999_IG08 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M15999_IG13: ; bbWeight=0, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] mov word ptr [rbx+0x10], 1
- jmp SHORT G_M15999_IG08 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M15999_IG14: ; bbWeight=0, gcrefRegs=C0E9 {rax rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rax] - mov r13d, 1 - jmp SHORT G_M15999_IG11
+ jmp SHORT G_M15999_IG09
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 252, prolog size 47, PerfScore 56.37, instruction count 74, allocated bytes for code 252 (MethodHash=999cc180) for method Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 47, PerfScore 52.41, instruction count 72, allocated bytes for code 236 (MethodHash=999cc180) for method Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
; ============================================================ Unwind Info:

-33 (-5.03%) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+d__85:MoveNext():ubyte:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 91344
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 91344
; 9 inlinees with PGO data; 32 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; @@ -15,7 +15,7 @@ ; V03 loc2 [V03,T09] ( 6, 5.63) ref -> rbx class-hnd exact single-def <Microsoft.CodeAnalysis.PEModule> ;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Reflection.Metadata.TypeDefinitionHandleCollection> ;* V05 loc4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.TypeDefinitionHandle>
-; V06 loc5 [V06 ] ( 12, 10.70) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
+; V06 loc5 [V06 ] ( 12, 10.70) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.TypeDefinition>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.PEModule+TypeDefToNamespace> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.NamespaceDefinitionHandle> @@ -24,11 +24,11 @@ ;* V12 tmp5 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V13 tmp6 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V14 tmp7 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V15 tmp8 [V15,T04] ( 4, 9.25) ref -> r14 class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
+; V15 tmp8 [V15,T04] ( 4, 9.25) ref -> rdi class-hnd exact "Inlining Arg" <System.Reflection.Metadata.MetadataReader>
;* V16 tmp9 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinition> ; V17 tmp10 [V17,T12] ( 3, 3.08) int -> rax "Inline return value spill temp" ;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle>
-; V19 tmp12 [V19,T15] ( 3, 3.07) int -> r14 "Inline return value spill temp"
+; V19 tmp12 [V19,T15] ( 3, 3.07) int -> rdi "Inline return value spill temp"
; V20 tmp13 [V20,T02] ( 4, 12.29) byref -> rax "impAppendStmt" ;* V21 tmp14 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -46,11 +46,11 @@ ;* V34 tmp27 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V35 tmp28 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.TypeDefinitionHandle> ; V36 tmp29 [V36,T23] ( 2, 2.01) int -> rdx "Inline stloc first use temp"
-; V37 tmp30 [V37,T21] ( 3, 2.01) int -> rdx "Inline return value spill temp"
+; V37 tmp30 [V37,T21] ( 3, 2.01) int -> rax "Inline return value spill temp"
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp32 [V39,T07] ( 5, 6.02) byref -> r14 "Inlining Arg"
+; V39 tmp32 [V39,T07] ( 5, 6.02) byref -> r8 "Inlining Arg"
; V40 tmp33 [V40,T08] ( 5, 6.02) int -> rdx "Inlining Arg"
-; V41 tmp34 [V41,T19] ( 3, 2.35) int -> rbx "Inline stloc first use temp"
+; V41 tmp34 [V41,T19] ( 3, 2.35) int -> rax "Inline stloc first use temp"
;* V42 tmp35 [V42 ] ( 0, 0 ) ushort -> zero-ref "Inline return value spill temp" ;* V43 tmp36 [V43 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp" ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -61,67 +61,188 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V50 tmp43 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.TypeDefinitionHandle> ;* V51 tmp44 [V51,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp45 [V52,T01] ( 5, 12.36) byref -> rsi "Inlining Arg"
+; V52 tmp45 [V52,T01] ( 5, 12.36) byref -> rax "Inlining Arg"
; V53 tmp46 [V53,T30] ( 2, 0.00) int -> rax "field V04._lastRowId (fldOffset=0x0)" P-INDEP ;* V54 tmp47 [V54 ] ( 0, 0 ) int -> zero-ref "field V05._rowId (fldOffset=0x0)" P-INDEP
-; V55 tmp48 [V55 ] ( 6, 4.08) ref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP -; V56 tmp49 [V56 ] ( 7, 6.62) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP -; V57 tmp50 [V57,T24] ( 2, 2.01) int -> rdi "field V08.TypeDef (fldOffset=0x0)" P-INDEP -; V58 tmp51 [V58,T25] ( 2, 2.01) int -> rdx "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
+; V55 tmp48 [V55 ] ( 6, 4.08) ref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06._reader (fldOffset=0x0)" P-DEP +; V56 tmp49 [V56 ] ( 7, 6.62) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V06._treatmentAndRowId (fldOffset=0x8)" P-DEP +; V57 tmp50 [V57,T24] ( 2, 2.01) int -> rsi "field V08.TypeDef (fldOffset=0x0)" P-INDEP +; V58 tmp51 [V58,T25] ( 2, 2.01) int -> rax "field V08.NamespaceHandle (fldOffset=0x4)" P-INDEP
;* V59 tmp52 [V59 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ; V60 tmp53 [V60,T31] ( 2, 0.00) int -> rax single-def "field V10._lastRowId (fldOffset=0x0)" P-INDEP ;* V61 tmp54 [V61,T32] ( 0, 0 ) int -> zero-ref single-def "field V10._currentRowId (fldOffset=0x4)" P-INDEP
-; V62 tmp55 [V62,T11] ( 4, 4.09) int -> rdi "field V14._rowId (fldOffset=0x0)" P-INDEP -; V63 tmp56 [V63,T13] ( 2, 3.08) ref -> r14 "field V16._reader (fldOffset=0x0)" P-INDEP
+; V62 tmp55 [V62,T11] ( 4, 4.09) int -> rsi "field V14._rowId (fldOffset=0x0)" P-INDEP +; V63 tmp56 [V63,T13] ( 2, 3.08) ref -> rdi "field V16._reader (fldOffset=0x0)" P-INDEP
; V64 tmp57 [V64,T14] ( 2, 3.08) int -> rax "field V16._treatmentAndRowId (fldOffset=0x8)" P-INDEP ;* V65 tmp58 [V65 ] ( 0, 0 ) int -> zero-ref "field V18._rowId (fldOffset=0x0)" P-INDEP ;* V66 tmp59 [V66 ] ( 0, 0 ) int -> zero-ref "field V21._rowId (fldOffset=0x0)" P-INDEP ; V67 tmp60 [V67,T17] ( 2, 3.07) int -> rdx "field V23._rowId (fldOffset=0x0)" P-INDEP ;* V68 tmp61 [V68 ] ( 0, 0 ) int -> zero-ref "field V24._rowId (fldOffset=0x0)" P-INDEP
-; V69 tmp62 [V69,T22] ( 3, 2.01) int -> rdx "field V30._value (fldOffset=0x0)" P-INDEP
+; V69 tmp62 [V69,T22] ( 3, 2.01) int -> rax "field V30._value (fldOffset=0x0)" P-INDEP
;* V70 tmp63 [V70 ] ( 0, 0 ) int -> zero-ref "field V32._rowId (fldOffset=0x0)" P-INDEP ; V71 tmp64 [V71,T26] ( 2, 2.01) int -> rdx "field V34._rowId (fldOffset=0x0)" P-INDEP ;* V72 tmp65 [V72 ] ( 0, 0 ) int -> zero-ref "field V35._rowId (fldOffset=0x0)" P-INDEP
-; V73 tmp66 [V73,T27] ( 2, 2.01) int -> rdx "field V46._value (fldOffset=0x0)" P-INDEP
+; V73 tmp66 [V73,T27] ( 2, 2.01) int -> rax "field V46._value (fldOffset=0x0)" P-INDEP
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._rowId (fldOffset=0x0)" P-INDEP ; V75 tmp68 [V75,T34] ( 2, 0 ) int -> rax "field V50._rowId (fldOffset=0x0)" P-INDEP
-; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym" -; V77 cse0 [V77,T10] ( 3, 4.63) int -> rax "CSE - aggressive"
+; V76 PSPSym [V76,T29] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" +; V77 cse0 [V77,T10] ( 3, 4.63) int -> rdx "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M11515_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp
- push r14
push rdi push rsi push rbx
- sub rsp, 64 - lea rbp, [rsp+0x60]
+ sub rsp, 56 + lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x30], rax
mov qword ptr [rbp-0x28], rax
- mov qword ptr [rbp-0x40], rsp
+ mov qword ptr [rbp-0x20], rax + mov qword ptr [rbp-0x30], rsp
mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00}
- ;; size=33 bbWeight=1 PerfScore 10.00 -G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=31 bbWeight=1 PerfScore 9.00 +G_M11515_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx] mov eax, dword ptr [rcx+0x10] mov rbx, gword ptr [rcx+0x08] ; gcrRegs +[rbx] test eax, eax
- je SHORT G_M11515_IG05 - ;; size=11 bbWeight=1 PerfScore 5.25
+ je G_M11515_IG14 + ;; size=15 bbWeight=1 PerfScore 5.25
G_M11515_IG03: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref cmp eax, 1
- jne G_M11515_IG29
+ jne G_M11515_IG19
;; size=9 bbWeight=1.00 PerfScore 1.25
-G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M11515_IG04: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rcx+0x10], -3
- jmp SHORT G_M11515_IG07 - ;; size=9 bbWeight=1.00 PerfScore 3.01 -G_M11515_IG05: ; bbWeight=0.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=7 bbWeight=1.00 PerfScore 1.00 +G_M11515_IG05: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref + lea rax, bword ptr [rcx+0x24] + ; byrRegs +[rax] + mov edx, dword ptr [rax+0x04] + cmp edx, dword ptr [rax] + jge G_M11515_IG15 + inc edx + mov dword ptr [rax+0x04], edx + mov esi, dword ptr [rcx+0x28] + and esi, 0xD1FFAB1E + cmp gword ptr [rbx+0x18], 0 + je G_M11515_IG16 + ;; size=40 bbWeight=1.54 PerfScore 21.62 +G_M11515_IG06: ; bbWeight=1.54, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + ; byrRegs -[rax] + cmp byte ptr [rbx+0x6C], 0 + jne G_M11515_IG22 + mov rdi, gword ptr [rbx+0x18] + ; gcrRegs +[rdi] + cmp dword ptr [rdi+0x50], 0 + jne G_M11515_IG20 + mov eax, esi + ;; size=26 bbWeight=1.54 PerfScore 15.81 +G_M11515_IG07: ; bbWeight=1.54, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + mov gword ptr [rbp-0x28], rdi + mov dword ptr [rbp-0x20], eax + mov rcx, gword ptr [rbp+0x10] + ; gcrRegs +[rcx] + cmp byte ptr [rcx+0x18], 0 + je SHORT G_M11515_IG10 + ;; size=17 bbWeight=1.54 PerfScore 10.80 +G_M11515_IG08: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + mov eax, dword ptr [rbp-0x20] + shr eax, 24 + movzx rax, al + test eax, eax + jne G_M11515_IG21 + mov rax, gword ptr [rbp-0x28] + ; gcrRegs +[rax] + add rax, 280 + ; gcrRegs -[rax] + ; byrRegs +[rax] + mov edx, dword ptr [rbp-0x20] + and edx, 0xD1FFAB1E + dec edx + imul edx, dword ptr [rax+0x20] + lea r8, bword ptr [rax+0x28] + ; byrRegs +[r8] + add edx, dword ptr [rax+0x08] + mov eax, edx + ; byrRegs -[rax] + add rax, 4 + movsxd r10, dword ptr [r8+0x08] + cmp rax, r10 + ja G_M11515_IG23 + mov rax, qword ptr [r8] + movsxd rdx, edx + mov edi, dword ptr [rax+rdx] + ;; size=77 bbWeight=1.54 PerfScore 37.25 +G_M11515_IG09: ; bbWeight=1.54, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref + ; byrRegs -[r8] + test dil, 6 + jne G_M11515_IG05 + ;; size=10 bbWeight=1.54 PerfScore 1.92 +G_M11515_IG10: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] + mov eax, dword ptr [rbp-0x20] + shr eax, 24 + movzx rax, al + test eax, eax + jne G_M11515_IG25 + mov rax, gword ptr [rbp-0x28] + ; gcrRegs +[rax] + add rax, 280 + ; gcrRegs -[rax] + ; byrRegs +[rax] + mov edx, dword ptr [rbp-0x20] + and edx, 0xD1FFAB1E + dec edx + imul edx, dword ptr [rax+0x20] + lea r8, bword ptr [rax+0x28] + ; byrRegs +[r8] + add edx, dword ptr [rax+0x10] + cmp byte ptr [rax+0x07], 0 + jne SHORT G_M11515_IG13 + ;; size=55 bbWeight=1.00 PerfScore 18.30 +G_M11515_IG11: ; bbWeight=0.78, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref + ; byrRegs -[rax] + mov eax, edx + add rax, 4 + movsxd r10, dword ptr [r8+0x08] + cmp rax, r10 + ja G_M11515_IG23 + mov rax, qword ptr [r8] + movsxd rdx, edx + mov eax, dword ptr [rax+rdx] + test eax, 0xD1FFAB1E + jne G_M11515_IG24 + ;; size=39 bbWeight=0.78 PerfScore 8.83 +G_M11515_IG12: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + ; byrRegs -[r8] + mov dword ptr [rcx+0x1C], esi + mov dword ptr [rcx+0x20], eax + mov dword ptr [rcx+0x10], 1 + mov eax, 1 + jmp G_M11515_IG26 + ;; size=23 bbWeight=1.00 PerfScore 5.26 +G_M11515_IG13: ; bbWeight=0.22, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref, isz + ; byrRegs +[r8] + mov eax, edx + add rax, 2 + movsxd r10, dword ptr [r8+0x08] + cmp rax, r10
...

-13 (-3.99%) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 225
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 225
; 3 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -73,24 +73,24 @@ G_M13084_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, bword ptr [rsp+0xA8] ; byrRegs +[rsi] ;; size=41 bbWeight=1 PerfScore 11.00
-G_M13084_IG02: ; bbWeight=1, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG02: ; bbWeight=1, gcrefRegs=C02C {rdx rbx rbp r14 r15}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rdx] mov r13, gword ptr [rsp+0xC0] ; gcrRegs +[r13] cmp byte ptr [rsp+0xC8], 0
- jne G_M13084_IG13
+ jne G_M13084_IG12
mov rcx, rbp ; gcrRegs +[rcx] test rcx, rcx
- je G_M13084_IG11 - ;; size=34 bbWeight=1 PerfScore 5.50 -G_M13084_IG03: ; bbWeight=0.98, gcrefRegs=E02E {rcx rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ je SHORT G_M13084_IG06 + ;; size=30 bbWeight=1 PerfScore 5.50 +G_M13084_IG03: ; bbWeight=0.98, gcrefRegs=E02E {rcx rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
xor eax, eax mov ecx, dword ptr [rcx+0x08] ; gcrRegs -[rcx] test ecx, ecx
- jle G_M13084_IG11 - ;; size=13 bbWeight=0.98 PerfScore 3.44
+ jle SHORT G_M13084_IG06 + ;; size=9 bbWeight=0.98 PerfScore 3.44
G_M13084_IG04: ; bbWeight=0.62, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref mov r8d, dword ptr [rbp+0x08] ;; size=4 bbWeight=0.62 PerfScore 1.23 @@ -99,18 +99,20 @@ G_M13084_IG05: ; bbWeight=1.64, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, mov r8, gword ptr [rbp+8*r8+0x10] ; gcrRegs +[r8] test byte ptr [r8+0x10], 1
- jne G_M13084_IG13
+ jne G_M13084_IG12
inc eax cmp eax, ecx jl SHORT G_M13084_IG05 ;; size=25 bbWeight=1.64 PerfScore 12.74
-G_M13084_IG06: ; bbWeight=0.98, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG06: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[r8]
- jmp G_M13084_IG11 - ;; size=5 bbWeight=0.98 PerfScore 1.96 -G_M13084_IG07: ; bbWeight=0.30, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref - xor r12d, r12d - ;; size=3 bbWeight=0.30 PerfScore 0.08
+ test r15, r15 + je G_M13084_IG11 + ;; size=9 bbWeight=1 PerfScore 1.25 +G_M13084_IG07: ; bbWeight=0.70, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref + movsx r12, word ptr [r15+0x10] + and r12d, 1 + ;; size=9 bbWeight=0.70 PerfScore 2.97
G_M13084_IG08: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref mov byte ptr [rbx+0x12], 176 lea rcx, bword ptr [rbx+0x08] @@ -119,7 +121,7 @@ G_M13084_IG08: ; bbWeight=1, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, by ; gcrRegs -[rdx] ; byrRegs -[rcx] test r12b, r12b
- jne G_M13084_IG14
+ jne G_M13084_IG13
;; size=22 bbWeight=1 PerfScore 3.75 G_M13084_IG09: ; bbWeight=1, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref lea rcx, bword ptr [rbx+0x18] @@ -181,28 +183,23 @@ G_M13084_IG10: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M13084_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M13084_IG11: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs +[rdx rbp r13-r15] ; byrRegs -[rdi]
- test r15, r15 - je G_M13084_IG07 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M13084_IG12: ; bbWeight=0.70, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref - movsx r12, word ptr [r15+0x10] - and r12d, 1
+ xor r12d, r12d
jmp G_M13084_IG08
- ;; size=14 bbWeight=0.70 PerfScore 4.37 -G_M13084_IG13: ; bbWeight=0, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+ ;; size=8 bbWeight=0.30 PerfScore 0.68 +G_M13084_IG12: ; bbWeight=0, gcrefRegs=E02C {rdx rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov r12d, 1 jmp G_M13084_IG08 ;; size=11 bbWeight=0 PerfScore 0.00
-G_M13084_IG14: ; bbWeight=0, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
+G_M13084_IG13: ; bbWeight=0, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdx] mov word ptr [rbx+0x10], 1 jmp G_M13084_IG09 ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 326, prolog size 41, PerfScore 69.57, instruction count 83, allocated bytes for code 326 (MethodHash=d068cce3) for method Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
+; Total bytes of code 313, prolog size 41, PerfScore 66.81, instruction count 82, allocated bytes for code 313 (MethodHash=d068cce3) for method Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
; ============================================================ Unwind Info:

+20 (+3.95%) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)

@@ -86,19 +86,19 @@ G_M34048_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[rbx] mov esi, edx ;; size=30 bbWeight=1 PerfScore 10.25
-G_M34048_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M34048_IG06 - ;; size=7 bbWeight=1 PerfScore 4.00 -G_M34048_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M34048_IG22 + ;; size=11 bbWeight=1 PerfScore 4.00 +G_M34048_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x6C], 0
- jne SHORT G_M34048_IG05
+ jne G_M34048_IG21
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x50], 0
- jne SHORT G_M34048_IG07 - ;; size=16 bbWeight=1 PerfScore 10.00 -G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M34048_IG23 + ;; size=24 bbWeight=1 PerfScore 10.00 +G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
add rdi, 648 ; gcrRegs -[rdi] ; byrRegs +[rdi] @@ -117,80 +117,16 @@ G_M34048_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov r8d, dword ptr [rbp-0x40] and r8d, 0xD1FFAB1E cmp eax, 4
- jne SHORT G_M34048_IG08
+ jne G_M34048_IG24
shl r8d, 2
- jmp SHORT G_M34048_IG12 - ;; size=75 bbWeight=1 PerfScore 17.00 -G_M34048_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rdi r14] - mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed() - call [rax]Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed() - ; gcr arg pop 0 - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M34048_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - mov rax, 0xD1FFAB1E ; code for <unknown method> - call [rax]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - jmp SHORT G_M34048_IG03 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M34048_IG07: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rdi] - mov rcx, rdi - ; gcrRegs +[rcx] - mov edx, esi - mov rax, 0xD1FFAB1E ; code for <unknown method> - call [rax]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov esi, eax - jmp SHORT G_M34048_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M34048_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref, isz - ; gcrRegs -[rdi] - ; byrRegs +[rdi r14] - cmp eax, 8 - jne SHORT G_M34048_IG11 - shl r8d, 2 - or r8d, 1 - jmp SHORT G_M34048_IG12 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M34048_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rdi r14] - mov rax, 0xD1FFAB1E ; code for System.Reflection.Throw:OutOfBounds() - call [rax]System.Reflection.Throw:OutOfBounds() - ; gcr arg pop 0 - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M34048_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rax, 0xD1FFAB1E ; const ptr - mov rax, gword ptr [rax] - ; gcrRegs +[rax] - jmp G_M34048_IG25 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M34048_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref - ; gcrRegs -[rax] +[rbx] - ; byrRegs +[rdi r14] - xor ecx, ecx - lea edx, [4*r8] - or edx, 2 - cmp eax, 23 - mov r8d, edx - cmovne r8d, ecx - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M34048_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref
+ ;; size=77 bbWeight=1 PerfScore 15.00 +G_M34048_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref
movzx rcx, byte ptr [rdi+0x04] xor edx, edx dec r15d
- js G_M34048_IG24
+ js G_M34048_IG18
;; size=15 bbWeight=1 PerfScore 3.50
-G_M34048_IG13: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG06: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[rdi] lea eax, [rdx+r15] mov r10d, eax @@ -201,80 +137,142 @@ G_M34048_IG13: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r1 imul r10d, r13d add r10d, r12d test ecx, ecx
- je SHORT G_M34048_IG20
+ je SHORT G_M34048_IG13
;; size=30 bbWeight=12.46 PerfScore 71.63
-G_M34048_IG14: ; bbWeight=7.70, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG07: ; bbWeight=7.70, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
mov r9d, r10d add r9, 2 movsxd r11, dword ptr [r14+0x08] cmp r9, r11
- ja SHORT G_M34048_IG09
+ ja SHORT G_M34048_IG19
mov r9, qword ptr [r14] movsxd r10, r10d movzx r10, word ptr [r9+r10] ;; size=27 bbWeight=7.70 PerfScore 76.96
-G_M34048_IG15: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG08: ; bbWeight=12.46, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp r8d, r10d
- ja SHORT G_M34048_IG21
+ ja SHORT G_M34048_IG14
;; size=5 bbWeight=12.46 PerfScore 15.57
-G_M34048_IG16: ; bbWeight=8.57, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG09: ; bbWeight=8.57, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp r8d, r10d
- jae SHORT G_M34048_IG22
+ jae SHORT G_M34048_IG15
;; size=5 bbWeight=8.57 PerfScore 10.72
-G_M34048_IG17: ; bbWeight=7.80, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
+G_M34048_IG10: ; bbWeight=7.80, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
lea r15d, [rax-0x01] ;; size=4 bbWeight=7.80 PerfScore 3.90
-G_M34048_IG18: ; bbWeight=12.69, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG11: ; bbWeight=12.69, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
cmp edx, r15d
- jle SHORT G_M34048_IG13
+ jle SHORT G_M34048_IG06
;; size=5 bbWeight=12.69 PerfScore 15.86
-G_M34048_IG19: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG12: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r14]
- jmp SHORT G_M34048_IG24
+ jmp SHORT G_M34048_IG18
;; size=2 bbWeight=0.23 PerfScore 0.46
-G_M34048_IG20: ; bbWeight=4.76, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+G_M34048_IG13: ; bbWeight=4.76, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
; byrRegs +[r14] mov r9d, r10d add r9, 4 movsxd r11, dword ptr [r14+0x08] cmp r9, r11
- ja G_M34048_IG09
+ ja SHORT G_M34048_IG19
mov r9, qword ptr [r14] movsxd r10, r10d mov r10d, dword ptr [r9+r10]
- jmp SHORT G_M34048_IG15 - ;; size=32 bbWeight=4.76 PerfScore 57.14 -G_M34048_IG21: ; bbWeight=3.88, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
+ jmp SHORT G_M34048_IG08 + ;; size=28 bbWeight=4.76 PerfScore 57.14 +G_M34048_IG14: ; bbWeight=3.88, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, isz
lea edx, [rax+0x01]
- jmp SHORT G_M34048_IG18
+ jmp SHORT G_M34048_IG11
;; size=5 bbWeight=3.88 PerfScore 9.71
-G_M34048_IG22: ; bbWeight=0.77, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M34048_IG15: ; bbWeight=0.77, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r14] mov edx, eax ;; size=2 bbWeight=0.77 PerfScore 0.19
-G_M34048_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M34048_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
inc edx
- je G_M34048_IG10
+ je SHORT G_M34048_IG20
mov rcx, rbx ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:GetConstantValueOrThrow(System.Reflection.Metadata.ConstantHandle):Microsoft.CodeAnalysis.ConstantValue:this call [rax]Microsoft.CodeAnalysis.PEModule:GetConstantValueOrThrow(System.Reflection.Metadata.ConstantHandle):Microsoft.CodeAnalysis.ConstantValue:this ; gcrRegs -[rcx rbx] +[rax] ; gcr arg pop 0
- jmp SHORT G_M34048_IG25 - ;; size=25 bbWeight=1 PerfScore 6.75 -G_M34048_IG24: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rbx] - mov edx, -1 - jmp SHORT G_M34048_IG23 - ;; size=7 bbWeight=0.23 PerfScore 0.52 -G_M34048_IG25: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] +[rax]
+ ;; size=19 bbWeight=1 PerfScore 4.75 +G_M34048_IG17: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V04}
- ;; size=4 bbWeight=1 PerfScore 1.00 -G_M34048_IG26: ; bbWeight=1, gcVars=0000000000080000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ jmp G_M34048_IG26 + ;; size=9 bbWeight=1 PerfScore 3.00 +G_M34048_IG18: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rbx] + ; GC ptr vars -{V04} + mov edx, -1 + jmp SHORT G_M34048_IG16 + ;; size=7 bbWeight=0.23 PerfScore 0.52 +G_M34048_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + mov rax, 0xD1FFAB1E ; code for System.Reflection.Throw:OutOfBounds() + call [rax]System.Reflection.Throw:OutOfBounds() + ; gcr arg pop 0 + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M34048_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rax, 0xD1FFAB1E ; const ptr + mov rax, gword ptr [rax] + ; gcrRegs +[rax] + jmp SHORT G_M34048_IG17 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M34048_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed() + call [rax]Microsoft.CodeAnalysis.PEModule:ThrowMetadataDisposed() + ; gcr arg pop 0 + int3 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M34048_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + mov rax, 0xD1FFAB1E ; code for <unknown method> + call [rax]<unknown method> + ; gcrRegs -[rcx] + ; gcr arg pop 0
...

+16 (+4.73%) : 109454.dasm - System.Collections.Generic.Dictionary2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer1[System.__Canon]):this (Tier1)

@@ -18,8 +18,8 @@ ; V06 tmp2 [V06,T07] ( 4, 3.33) ref -> rdx ; V07 tmp3 [V07,T05] ( 3, 4 ) long -> rdx "spilling helperCall" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp5 [V09,T08] ( 5, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> -; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+; V09 tmp5 [V09,T08] ( 6, 3 ) ref -> rdi class-hnd "Inline return value spill temp" <System.Collections.Generic.IEqualityComparer`1[System.String]> +; V10 tmp6 [V10,T02] ( 4, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
; V11 cse0 [V11,T06] ( 6, 3.87) long -> rcx multi-def "CSE - aggressive" ; V12 rat0 [V12,T10] ( 3, 1.47) long -> rcx "Spilling to split statement for tree" ; V13 rat1 [V13,T11] ( 3, 1.33) long -> rdx "runtime lookup" @@ -49,9 +49,9 @@ G_M21827_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov rdx, rsi ; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M21827_IG06
+ je SHORT G_M21827_IG09
;; size=8 bbWeight=1 PerfScore 1.50
-G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] lea rcx, bword ptr [rbx+0x18] ; byrRegs +[rcx] @@ -64,83 +64,67 @@ G_M21827_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, mov rax, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rax jne G_M21827_IG17
- mov rsi, gword ptr [rbx+0x18] - ; gcrRegs +[rsi] - mov rdx, 0xD1FFAB1E ; const ptr - cmp rsi, gword ptr [rdx] - jne SHORT G_M21827_IG13 - ;; size=57 bbWeight=1 PerfScore 18.00 -G_M21827_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi]
+ mov rdx, gword ptr [rbx+0x18] + ; gcrRegs +[rdx] + mov rax, 0xD1FFAB1E ; const ptr + cmp rdx, gword ptr [rax] + jne G_M21827_IG16 + ;; size=61 bbWeight=1 PerfScore 18.00 +G_M21827_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx]
mov rdx, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rdx] ; gcrRegs +[rdi]
- jmp SHORT G_M21827_IG11 - ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M21827_IG06: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=0.50 PerfScore 1.12 +G_M21827_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + test rdi, rdi + je G_M21827_IG17 + ;; size=9 bbWeight=0.50 PerfScore 0.62 +G_M21827_IG07: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + mov rdx, qword ptr [rcx+0x38] + mov rdx, qword ptr [rdx] + mov rdx, qword ptr [rdx+0x58] + test rdx, rdx + je SHORT G_M21827_IG13 + ;; size=16 bbWeight=1 PerfScore 7.25 +G_M21827_IG08: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG14 + ;; size=2 bbWeight=0.80 PerfScore 1.60 +G_M21827_IG09: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rcx, qword ptr [rbx] mov rdx, qword ptr [rcx+0x38] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+0x60] test rdx, rdx
- je SHORT G_M21827_IG08
+ je SHORT G_M21827_IG11
;; size=19 bbWeight=0.33 PerfScore 3.08
-G_M21827_IG07: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG09
+G_M21827_IG10: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21827_IG12
;; size=2 bbWeight=0.27 PerfScore 0.53
-G_M21827_IG08: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M21827_IG11: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdx, rax ;; size=18 bbWeight=0.07 PerfScore 0.10
-G_M21827_IG09: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M21827_IG12: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rdx call [System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]] ; gcrRegs +[rax] ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- jmp SHORT G_M21827_IG04 - ;; size=14 bbWeight=0.33 PerfScore 1.83 -G_M21827_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rdx] +[rsi] - mov rax, 0xD1FFAB1E ; const ptr - xor rdi, rdi - ; gcrRegs +[rdi] - mov rdx, 0xD1FFAB1E ; const ptr - cmp rsi, gword ptr [rax] - cmove rdi, gword ptr [rdx] - ;; size=29 bbWeight=0.50 PerfScore 3.38 -G_M21827_IG11: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] - test rdi, rdi - je SHORT G_M21827_IG17 - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx] - mov rdx, qword ptr [rdx+0x58] - test rdx, rdx - je SHORT G_M21827_IG14 - ;; size=21 bbWeight=1 PerfScore 8.50 -G_M21827_IG12: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M21827_IG15 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M21827_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] +[rsi] - mov rdx, 0xD1FFAB1E ; const ptr - cmp rsi, gword ptr [rdx] - je SHORT G_M21827_IG20 - jmp SHORT G_M21827_IG10 - ;; size=17 bbWeight=0.50 PerfScore 3.12 -G_M21827_IG14: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi] +[rdi]
+ jmp G_M21827_IG04 + ;; size=17 bbWeight=0.33 PerfScore 1.83 +G_M21827_IG13: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdx] +[rdi]
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdx, rax ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M21827_IG15: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M21827_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rcx, rdx mov rdx, rdi ; gcrRegs +[rdx] @@ -156,14 +140,29 @@ G_M21827_IG15: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, ; byrRegs -[rcx] nop ;; size=24 bbWeight=1 PerfScore 3.50
-G_M21827_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M21827_IG15: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi pop rdi ret ;; size=8 bbWeight=1 PerfScore 2.75
+G_M21827_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rdx] + mov rax, 0xD1FFAB1E ; const ptr + cmp rdx, gword ptr [rax] + je SHORT G_M21827_IG20 + mov rax, 0xD1FFAB1E ; const ptr + xor rdi, rdi + ; gcrRegs +[rdi] + mov r8, 0xD1FFAB1E ; const ptr + cmp rdx, gword ptr [rax] + cmove rdi, gword ptr [r8] + test rdi, rdi + jne G_M21827_IG07 + ;; size=53 bbWeight=0.50 PerfScore 6.12
G_M21827_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rdx rdi]
add rsp, 48 pop rbx pop rsi @@ -190,10 +189,10 @@ G_M21827_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rax, 0xD1FFAB1E ; const ptr mov rdi, gword ptr [rax] ; gcrRegs +[rdi]
- jmp G_M21827_IG11
+ jmp G_M21827_IG06
;; size=18 bbWeight=0 PerfScore 0.00
-; Total bytes of code 338, prolog size 12, PerfScore 57.58, instruction count 89, allocated bytes for code 338 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
+; Total bytes of code 354, prolog size 12, PerfScore 55.57, instruction count 89, allocated bytes for code 354 (MethodHash=b587aabc) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+20 (+5.68%) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)

@@ -56,98 +56,98 @@ G_M2348_IG10: ; bbWeight=0.06, epilog, nogc, extend G_M2348_IG11: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz mov rax, 0xD1FFAB1E ; <unknown class> cmp rcx, rax
- jne SHORT G_M2348_IG13
+ jne SHORT G_M2348_IG15
;; size=15 bbWeight=0.04 PerfScore 0.06
-G_M2348_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M2348_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov edx, 8
- jmp SHORT G_M2348_IG14 - ;; size=7 bbWeight=0.04 PerfScore 0.09 -G_M2348_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - je SHORT G_M2348_IG16 - mov rax, 0xD1FFAB1E ; <unknown class> - cmp rcx, rax - je SHORT G_M2348_IG17 - mov rax, 0xD1FFAB1E ; <unknown class> - cmp rcx, rax - jne SHORT G_M2348_IG18 - mov edx, 14 - ;; size=50 bbWeight=0.00 PerfScore 0.00 -G_M2348_IG14: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=5 bbWeight=0.04 PerfScore 0.01 +G_M2348_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movsx rax, dl ;; size=4 bbWeight=0.04 PerfScore 0.01
-G_M2348_IG15: ; bbWeight=0.04, epilog, nogc, extend
+G_M2348_IG14: ; bbWeight=0.04, epilog, nogc, extend
ret ;; size=1 bbWeight=0.04 PerfScore 0.04
-G_M2348_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - mov edx, 15 - jmp SHORT G_M2348_IG14 - ;; size=7 bbWeight=0 PerfScore 0.00
+G_M2348_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + je G_M2348_IG24 + mov rax, 0xD1FFAB1E ; <unknown class> + cmp rcx, rax + je G_M2348_IG25 + mov rax, 0xD1FFAB1E ; <unknown class> + cmp rcx, rax + jne SHORT G_M2348_IG16 + mov edx, 14 + jmp SHORT G_M2348_IG13 + ;; size=60 bbWeight=0.00 PerfScore 0.00 +G_M2348_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + jne SHORT G_M2348_IG17 + mov edx, 16 + jmp SHORT G_M2348_IG13 + ;; size=22 bbWeight=0 PerfScore 0.00
G_M2348_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov edx, 19 - jmp SHORT G_M2348_IG14 - ;; size=7 bbWeight=0 PerfScore 0.00
+ mov rdx, 0xD1FFAB1E ; <unknown class> + cmp rcx, rdx + jne SHORT G_M2348_IG18 + mov edx, 18 + jmp SHORT G_M2348_IG13 + ;; size=22 bbWeight=0 PerfScore 0.00
G_M2348_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG19
- mov edx, 16 - jmp SHORT G_M2348_IG14 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 17 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG20
- mov edx, 18 - jmp SHORT G_M2348_IG14 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 11 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG21
- mov edx, 17 - jmp SHORT G_M2348_IG14 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 12 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG22
- mov edx, 11 - jmp SHORT G_M2348_IG14 - ;; size=22 bbWeight=0 PerfScore 0.00
+ mov edx, 33 + jmp G_M2348_IG13 + ;; size=25 bbWeight=0 PerfScore 0.00
G_M2348_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; <unknown class> cmp rcx, rdx jne SHORT G_M2348_IG23
- mov edx, 12 - jmp G_M2348_IG14 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M2348_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - jne SHORT G_M2348_IG24 - mov edx, 33 - jmp G_M2348_IG14 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, 0xD1FFAB1E ; <unknown class> - cmp rcx, rdx - jne SHORT G_M2348_IG25
mov edx, 10
- jmp G_M2348_IG14
+ jmp G_M2348_IG13
;; size=25 bbWeight=0 PerfScore 0.00
-G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2348_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; <unknown class> xor eax, eax mov r8d, 9 cmp rcx, rdx mov edx, r8d cmovne edx, eax
- jmp G_M2348_IG14
+ jmp G_M2348_IG13
;; size=32 bbWeight=0 PerfScore 0.00
+G_M2348_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov edx, 15 + jmp G_M2348_IG13 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M2348_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov edx, 19 + jmp G_M2348_IG13 + ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 0, PerfScore 6.20, instruction count 79, allocated bytes for code 352 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
+; Total bytes of code 372, prolog size 0, PerfScore 6.12, instruction count 79, allocated bytes for code 372 (MethodHash=f326f6d3) for method Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 64 11 21 32 -93 +144
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 24 9 6 9 -32 +30
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 86 30 35 21 -447 +481
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x64.Release.mch 271 85 119 67 -501 +830
librariestestsnotieredcompilation.run.windows.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
445 135 181 129 -1,073 +1,485

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,290 61,702 67,588 0 (0.00%) 0 (0.00%)
benchmarks.run.windows.x64.checked.mch 27,926 4 27,922 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 103,183 50,327 52,856 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x64.checked.mch 53,511 36,872 16,639 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 574,358 341,481 232,877 1 (0.00%) 27 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 243,730 15 243,715 1 (0.00%) 1 (0.00%)
libraries.pmi.windows.x64.checked.mch 309,227 6 309,221 1 (0.00%) 1 (0.00%)
libraries_tests.run.windows.x64.Release.mch 681,424 485,046 196,378 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,536 21,924 298,612 0 (0.00%) 0 (0.00%)
realworld.run.windows.x64.checked.mch 36,610 3 36,607 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,388 11 32,377 0 (0.00%) 0 (0.00%)
2,512,183 997,391 1,514,792 3 (0.00%) 29 (0.00%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 47040723 (overridden on cmd)
Total bytes of diff: 47040774 (overridden on cmd)
Total bytes of delta: 51 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          18 : 57086.dasm (3.78 % of base)
          16 : 29334.dasm (3.17 % of base)
          11 : 114046.dasm (3.35 % of base)
          11 : 79524.dasm (1.72 % of base)
           7 : 113192.dasm (1.06 % of base)
           6 : 117761.dasm (0.69 % of base)
           6 : 22362.dasm (0.69 % of base)
           6 : 28944.dasm (0.86 % of base)
           6 : 68987.dasm (0.86 % of base)
           6 : 116808.dasm (0.69 % of base)
           6 : 19951.dasm (0.69 % of base)
           6 : 55084.dasm (0.86 % of base)
           6 : 64764.dasm (0.86 % of base)
           6 : 84907.dasm (0.69 % of base)
           6 : 21930.dasm (0.69 % of base)
           5 : 70932.dasm (0.41 % of base)
           4 : 33355.dasm (0.90 % of base)
           4 : 29570.dasm (0.65 % of base)
           3 : 54098.dasm (0.92 % of base)
           3 : 70264.dasm (0.61 % of base)

Top file improvements (bytes):
         -12 : 100361.dasm (-1.64 % of base)
         -12 : 118276.dasm (-1.64 % of base)
         -12 : 128356.dasm (-1.64 % of base)
          -9 : 19567.dasm (-0.21 % of base)
          -9 : 22249.dasm (-0.21 % of base)
          -9 : 84280.dasm (-0.21 % of base)
          -9 : 21781.dasm (-0.21 % of base)
          -9 : 116660.dasm (-0.21 % of base)
          -7 : 113284.dasm (-0.99 % of base)
          -3 : 70933.dasm (-0.69 % of base)
          -2 : 76192.dasm (-0.46 % of base)

32 total files with Code Size differences (11 improved, 21 regressed), 23 unchanged.

Top method regressions (bytes):
          18 (3.78 % of base) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
          16 (3.17 % of base) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
          11 (3.35 % of base) : 114046.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          11 (1.72 % of base) : 79524.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
           7 (1.06 % of base) : 113192.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)
           6 (0.86 % of base) : 28944.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 55084.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 64764.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.69 % of base) : 117761.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 116808.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 19951.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 84907.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 21930.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           5 (0.41 % of base) : 70932.dasm - System.Text.Json.JsonSerializer:WriteString[System.__Canon](byref,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]):System.String (Tier1)
           4 (0.65 % of base) : 29570.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
           4 (0.90 % of base) : 33355.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
           3 (0.92 % of base) : 54098.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           3 (0.61 % of base) : 70264.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)

Top method improvements (bytes):
         -12 (-1.64 % of base) : 100361.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.64 % of base) : 118276.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.64 % of base) : 128356.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -9 (-0.21 % of base) : 19567.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 22249.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 84280.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 21781.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 116660.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -7 (-0.99 % of base) : 113284.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -3 (-0.69 % of base) : 70933.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
          -2 (-0.46 % of base) : 76192.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)

Top method regressions (percentages):
          18 (3.78 % of base) : 57086.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
          11 (3.35 % of base) : 114046.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,ubyte]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          16 (3.17 % of base) : 29334.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)
          11 (1.72 % of base) : 79524.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
           7 (1.06 % of base) : 113192.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)
           3 (0.92 % of base) : 54098.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (0.90 % of base) : 33355.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
           6 (0.86 % of base) : 28944.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 55084.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           6 (0.86 % of base) : 64764.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
           2 (0.75 % of base) : 76331.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
           6 (0.69 % of base) : 117761.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 116808.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 19951.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 84907.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           6 (0.69 % of base) : 21930.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (Tier1)
           4 (0.65 % of base) : 29570.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriter(System.Text.Json.JsonSerializerOptions,System.Text.Json.PooledByteBufferWriter):System.Text.Json.Utf8JsonWriter (Tier1)
           3 (0.61 % of base) : 70264.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Instrumented Tier1)

Top method improvements (percentages):
         -12 (-1.64 % of base) : 100361.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.64 % of base) : 118276.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.64 % of base) : 128356.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -7 (-0.99 % of base) : 113284.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
          -3 (-0.69 % of base) : 70933.dasm - System.Text.Json.Utf8JsonWriterCache:RentWriterAndBuffer(System.Text.Json.JsonWriterOptions,int,byref):System.Text.Json.Utf8JsonWriter (Tier1)
          -2 (-0.46 % of base) : 76192.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
          -9 (-0.21 % of base) : 19567.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 22249.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 21781.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 84280.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
          -9 (-0.21 % of base) : 116660.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)


benchmarks.run_pgo.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36232799 (overridden on cmd)
Total bytes of diff: 36232797 (overridden on cmd)
Total bytes of delta: -2 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          15 : 71662.dasm (4.50 % of base)
           4 : 77017.dasm (2.08 % of base)
           4 : 80647.dasm (2.08 % of base)
           3 : 46084.dasm (0.44 % of base)
           3 : 99545.dasm (0.44 % of base)
           1 : 98626.dasm (0.10 % of base)

Top file improvements (bytes):
          -7 : 67576.dasm (-1.56 % of base)
          -4 : 35391.dasm (-1.64 % of base)
          -4 : 86915.dasm (-1.69 % of base)
          -4 : 85608.dasm (-1.69 % of base)
          -4 : 39441.dasm (-1.64 % of base)
          -3 : 102548.dasm (-1.03 % of base)
          -3 : 97873.dasm (-1.03 % of base)
          -2 : 69051.dasm (-1.50 % of base)
          -1 : 41852.dasm (-0.30 % of base)

15 total files with Code Size differences (9 improved, 6 regressed), 9 unchanged.

Top method regressions (bytes):
          15 (4.50 % of base) : 71662.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (2.08 % of base) : 77017.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           4 (2.08 % of base) : 80647.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           3 (0.44 % of base) : 46084.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           3 (0.44 % of base) : 99545.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           1 (0.10 % of base) : 98626.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)

Top method improvements (bytes):
          -7 (-1.56 % of base) : 67576.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -4 (-1.64 % of base) : 35391.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.69 % of base) : 86915.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.69 % of base) : 85608.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.64 % of base) : 39441.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -3 (-1.03 % of base) : 102548.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
          -3 (-1.03 % of base) : 97873.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
          -2 (-1.50 % of base) : 69051.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -1 (-0.30 % of base) : 41852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)

Top method regressions (percentages):
          15 (4.50 % of base) : 71662.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           4 (2.08 % of base) : 77017.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           4 (2.08 % of base) : 80647.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:SwapIfGreater(System.Span`1[System.Collections.IntStruct],System.Comparison`1[System.Collections.IntStruct],int,int) (Tier1)
           3 (0.44 % of base) : 99545.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           3 (0.44 % of base) : 46084.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):this (Tier1)
           1 (0.10 % of base) : 98626.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)

Top method improvements (percentages):
          -4 (-1.69 % of base) : 86915.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.69 % of base) : 85608.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.64 % of base) : 35391.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -4 (-1.64 % of base) : 39441.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (Tier1)
          -7 (-1.56 % of base) : 67576.dasm - Microsoft.CodeAnalysis.DiagnosticBag:ToReadOnlyCore[System.__Canon](System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -2 (-1.50 % of base) : 69051.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -3 (-1.03 % of base) : 102548.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
          -3 (-1.03 % of base) : 97873.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.BigStruct]:SwapIfGreater(System.Span`1[System.Collections.BigStruct],System.Comparison`1[System.Collections.BigStruct],int,int) (Tier1)
          -1 (-0.30 % of base) : 41852.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)

15 total methods with Code Size differences (9 improved, 6 regressed).


coreclr_tests.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 393194438 (overridden on cmd)
Total bytes of diff: 393194472 (overridden on cmd)
Total bytes of delta: 34 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          62 : 277831.dasm (3.45 % of base)
          52 : 277800.dasm (8.27 % of base)
          51 : 277791.dasm (11.09 % of base)
          29 : 277818.dasm (2.87 % of base)
          26 : 366218.dasm (2.77 % of base)
          25 : 366173.dasm (3.65 % of base)
          24 : 277830.dasm (4.95 % of base)
          19 : 277829.dasm (8.23 % of base)
          19 : 370765.dasm (2.09 % of base)
          18 : 370761.dasm (2.75 % of base)
          17 : 277883.dasm (10.30 % of base)
          17 : 277920.dasm (2.83 % of base)
          11 : 277826.dasm (5.29 % of base)
          10 : 277884.dasm (2.96 % of base)
           9 : 277825.dasm (4.29 % of base)
           8 : 277885.dasm (1.50 % of base)
           8 : 277919.dasm (2.01 % of base)
           8 : 371873.dasm (1.07 % of base)
           6 : 277857.dasm (2.32 % of base)
           6 : 277923.dasm (2.70 % of base)

Top file improvements (bytes):
        -122 : 277912.dasm (-40.13 % of base)
         -37 : 277832.dasm (-13.21 % of base)
         -37 : 277839.dasm (-8.85 % of base)
         -28 : 277874.dasm (-6.01 % of base)
         -25 : 277822.dasm (-7.20 % of base)
         -25 : 277907.dasm (-9.77 % of base)
         -24 : 277785.dasm (-9.96 % of base)
         -20 : 277828.dasm (-6.06 % of base)
         -20 : 277928.dasm (-7.27 % of base)
         -19 : 277925.dasm (-14.39 % of base)
         -18 : 277794.dasm (-5.54 % of base)
         -12 : 277848.dasm (-1.14 % of base)
          -8 : 277840.dasm (-5.16 % of base)
          -7 : 277844.dasm (-2.11 % of base)
          -6 : 277805.dasm (-3.30 % of base)
          -6 : 277833.dasm (-2.69 % of base)
          -5 : 277799.dasm (-4.13 % of base)
          -4 : 277797.dasm (-1.79 % of base)
          -4 : 277873.dasm (-1.30 % of base)
          -3 : 277862.dasm (-0.59 % of base)

49 total files with Code Size differences (26 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
          62 (3.45 % of base) : 277831.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
          52 (8.27 % of base) : 277800.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
          51 (11.09 % of base) : 277791.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          29 (2.87 % of base) : 277818.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
          26 (2.77 % of base) : 366218.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
          25 (3.65 % of base) : 366173.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
          24 (4.95 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
          19 (2.09 % of base) : 370765.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
          19 (8.23 % of base) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
          18 (2.75 % of base) : 370761.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
          17 (2.83 % of base) : 277920.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          17 (10.30 % of base) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
          11 (5.29 % of base) : 277826.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
          10 (2.96 % of base) : 277884.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
           9 (4.29 % of base) : 277825.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
           8 (1.07 % of base) : 371873.dasm - ILCompiler.DependencyAnalysis.SortableDependencyNode:CompareImpl(ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.SortableDependencyNode,ILCompiler.DependencyAnalysis.CompilerComparer):int (Tier1)
           8 (2.01 % of base) : 277919.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
           8 (1.50 % of base) : 277885.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)
           6 (0.23 % of base) : 371314.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugInfoTableNode:CreateBoundsBlobForMethod(Internal.JitInterface.OffsetMapping[]):ubyte[] (Tier1)
           6 (2.70 % of base) : 277923.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)

Top method improvements (bytes):
        -122 (-40.13 % of base) : 277912.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -37 (-8.85 % of base) : 277839.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
         -37 (-13.21 % of base) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
         -28 (-6.01 % of base) : 277874.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -25 (-9.77 % of base) : 277907.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -25 (-7.20 % of base) : 277822.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -24 (-9.96 % of base) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -20 (-7.27 % of base) : 277928.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -20 (-6.06 % of base) : 277828.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
         -19 (-14.39 % of base) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -18 (-5.54 % of base) : 277794.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
         -12 (-1.14 % of base) : 277848.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (FullOpts)
          -8 (-5.16 % of base) : 277840.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
          -7 (-2.11 % of base) : 277844.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
          -6 (-2.69 % of base) : 277833.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)
          -6 (-3.30 % of base) : 277805.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -5 (-4.13 % of base) : 277799.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
          -4 (-1.79 % of base) : 277797.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)
          -4 (-1.30 % of base) : 277873.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetMemberList(int,System.String,int):System.__Canon[]:this (FullOpts)
          -3 (-0.59 % of base) : 277862.dasm - System.RuntimeTypeHandle:CreateInstanceForAnotherGenericParameter(System.RuntimeType,System.RuntimeType):System.Object (FullOpts)

Top method regressions (percentages):
          51 (11.09 % of base) : 277791.dasm - System.Collections.Generic.ComparerHelpers:CreateDefaultEqualityComparer(System.Type):System.Object (FullOpts)
          17 (10.30 % of base) : 277883.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalListInOrder(System.__Canon[]):this (FullOpts)
          52 (8.27 % of base) : 277800.dasm - System.Buffer:Memmove(byref,byref,ulong) (FullOpts)
          19 (8.23 % of base) : 277829.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(ulong,ulong):ulong (FullOpts)
          11 (5.29 % of base) : 277826.dasm - System.Text.DecoderReplacementFallback:.ctor(System.String):this (FullOpts)
          24 (4.95 % of base) : 277830.dasm - System.Text.UTF8Encoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
           9 (4.29 % of base) : 277825.dasm - System.Text.EncoderReplacementFallback:.ctor(System.String):this (FullOpts)
          25 (3.65 % of base) : 366173.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
          62 (3.45 % of base) : 277831.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
          10 (2.96 % of base) : 277884.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
           5 (2.91 % of base) : 277788.dasm - System.Collections.HashHelpers:GetPrime(int):int (FullOpts)
          29 (2.87 % of base) : 277818.dasm - System.Diagnostics.Tracing.EventSource:InitializeProviderMetadata():this (FullOpts)
          17 (2.83 % of base) : 277920.dasm - System.Diagnostics.Tracing.EventListener:DisposeOnShutdown() (FullOpts)
          26 (2.77 % of base) : 366218.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
          18 (2.75 % of base) : 370761.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCode(ubyte):ubyte:this (Tier1)
           6 (2.70 % of base) : 277923.dasm - System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this (FullOpts)
           6 (2.32 % of base) : 277857.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
          19 (2.09 % of base) : 370765.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseType():Internal.TypeSystem.TypeDesc:this (Tier1)
           8 (2.01 % of base) : 277919.dasm - System.Runtime.Loader.AssemblyLoadContext:OnProcessExit() (FullOpts)
           8 (1.50 % of base) : 277885.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (FullOpts)

Top method improvements (percentages):
        -122 (-40.13 % of base) : 277912.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
         -19 (-14.39 % of base) : 277925.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,ulong,System.Object) (FullOpts)
         -37 (-13.21 % of base) : 277832.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (FullOpts)
         -24 (-9.96 % of base) : 277785.dasm - System.AppContext:Setup(ulong,ulong,int) (FullOpts)
         -25 (-9.77 % of base) : 277907.dasm - System.Runtime.InteropServices.GCHandle:.ctor(System.Object,int):this (FullOpts)
         -37 (-8.85 % of base) : 277839.dasm - System.Diagnostics.Tracing.EtwEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
         -20 (-7.27 % of base) : 277928.dasm - System.Diagnostics.Tracing.EventProvider:Dispose(ubyte):this (FullOpts)
         -25 (-7.20 % of base) : 277822.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (FullOpts)
         -20 (-6.06 % of base) : 277828.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
         -28 (-6.01 % of base) : 277874.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         -18 (-5.54 % of base) : 277794.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:.cctor() (FullOpts)
          -8 (-5.16 % of base) : 277840.dasm - System.Diagnostics.Tracing.EventListener:get_EventListenersLock():System.Object (FullOpts)
          -5 (-4.13 % of base) : 277799.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (FullOpts)
          -2 (-3.51 % of base) : 277804.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer+OrdinalComparer:GetHashCode(System.String):int:this (FullOpts)
          -6 (-3.30 % of base) : 277805.dasm - System.String:GetNonRandomizedHashCode():int:this (FullOpts)
          -6 (-2.69 % of base) : 277833.dasm - System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte (FullOpts)
          -2 (-2.25 % of base) : 277814.dasm - System.Diagnostics.Tracing.RuntimeEventSource:Initialize() (FullOpts)
          -1 (-2.17 % of base) : 277837.dasm - System.Runtime.InteropServices.GCHandle:InternalAlloc(System.Object,int):long (FullOpts)
          -7 (-2.11 % of base) : 277844.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
          -4 (-1.79 % of base) : 277797.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (FullOpts)


libraries_tests.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 282129292 (overridden on cmd)
Total bytes of diff: 282129621 (overridden on cmd)
Total bytes of delta: 329 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          54 : 317605.dasm (0.81 % of base)
          43 : 142267.dasm (2.19 % of base)
          30 : 68734.dasm (1.53 % of base)
          23 : 617288.dasm (1.44 % of base)
          20 : 616392.dasm (5.68 % of base)
          20 : 618416.dasm (3.95 % of base)
          16 : 109454.dasm (4.73 % of base)
          15 : 58347.dasm (3.15 % of base)
          15 : 167212.dasm (2.14 % of base)
          14 : 173494.dasm (0.64 % of base)
          14 : 331935.dasm (3.62 % of base)
          13 : 82070.dasm (1.45 % of base)
          12 : 198341.dasm (1.90 % of base)
          12 : 41134.dasm (1.60 % of base)
          11 : 169315.dasm (3.04 % of base)
          10 : 449542.dasm (1.49 % of base)
          10 : 319222.dasm (2.94 % of base)
          10 : 483805.dasm (2.62 % of base)
          10 : 498635.dasm (1.53 % of base)
          10 : 64312.dasm (1.21 % of base)

Top file improvements (bytes):
         -33 : 166205.dasm (-5.03 % of base)
         -16 : 626490.dasm (-6.35 % of base)
         -13 : 624390.dasm (-3.41 % of base)
         -13 : 632219.dasm (-3.99 % of base)
         -13 : 239711.dasm (-1.00 % of base)
         -12 : 197859.dasm (-2.85 % of base)
         -12 : 219017.dasm (-2.85 % of base)
         -12 : 417106.dasm (-1.12 % of base)
         -12 : 501173.dasm (-2.85 % of base)
         -12 : 528513.dasm (-2.85 % of base)
         -12 : 603508.dasm (-1.12 % of base)
         -12 : 126281.dasm (-1.53 % of base)
         -12 : 208220.dasm (-2.85 % of base)
         -12 : 317402.dasm (-1.53 % of base)
         -12 : 318005.dasm (-2.85 % of base)
         -12 : 323180.dasm (-2.85 % of base)
         -12 : 460192.dasm (-2.85 % of base)
         -12 : 460198.dasm (-2.74 % of base)
         -12 : 539792.dasm (-2.85 % of base)
         -10 : 619265.dasm (-3.82 % of base)

52 total files with Code Size differences (26 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          54 (0.81 % of base) : 317605.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFileTests_OpenExisting:OpenCreatedFromFile(System.String,int,int):this (Tier1)
          43 (2.19 % of base) : 142267.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          30 (1.53 % of base) : 68734.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          23 (1.44 % of base) : 617288.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (Tier1)
          20 (3.95 % of base) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          20 (5.68 % of base) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
          16 (4.73 % of base) : 109454.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          15 (2.14 % of base) : 167212.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          15 (3.15 % of base) : 58347.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
          14 (0.64 % of base) : 173494.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],byref,byref,ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (Tier1)
          14 (3.62 % of base) : 331935.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
          13 (1.45 % of base) : 82070.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
          12 (1.90 % of base) : 198341.dasm - System.Collections.Concurrent.ConcurrentQueue`1[int]:CopyTo(int[],int):this (Tier1)
          12 (1.60 % of base) : 41134.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
          11 (3.04 % of base) : 169315.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet:MergeGlobalConfigs(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.AnalyzerConfig],byref):Microsoft.CodeAnalysis.AnalyzerConfigSet+GlobalAnalyzerConfig (Tier1)
          10 (1.21 % of base) : 64312.dasm - NuGet.Configuration.ConfigurationDefaults:get_DefaultPackageSources():System.Collections.Generic.IEnumerable`1[NuGet.Configuration.PackageSource]:this (Tier1)
          10 (1.21 % of base) : 87320.dasm - NuGet.Configuration.ConfigurationDefaults:get_DefaultPackageSources():System.Collections.Generic.IEnumerable`1[NuGet.Configuration.PackageSource]:this (Tier1)
          10 (2.94 % of base) : 319222.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          10 (2.62 % of base) : 483805.dasm - System.Reflection.Emit.SignatureHelper:InternalGetSignatureArray():ubyte[]:this (Tier1)
          10 (1.49 % of base) : 449542.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)

Top method improvements (bytes):
         -33 (-5.03 % of base) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -16 (-6.35 % of base) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
         -13 (-3.99 % of base) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
         -13 (-3.41 % of base) : 624390.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
         -13 (-1.00 % of base) : 239711.dasm - System.Reflection.Associates:AssignAssociates(System.Reflection.MetadataImport,int,System.RuntimeType,System.RuntimeType,byref,byref,byref,byref,byref,byref,byref,byref) (Tier1)
         -12 (-1.53 % of base) : 126281.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.53 % of base) : 317402.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:IntroSort(System.Span`1[System.__Canon],int,System.Comparison`1[System.__Canon]) (Tier1)
         -12 (-1.12 % of base) : 417106.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
         -12 (-1.12 % of base) : 603508.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):this (Tier1)
         -12 (-2.85 % of base) : 197859.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 219017.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 501173.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 528513.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 208220.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 318005.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 460192.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 539792.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.74 % of base) : 460198.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -10 (-3.82 % of base) : 619265.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]):Microsoft.CodeAnalysis.CSharp.BoundStatementList:this (Tier1)

Top method regressions (percentages):
          20 (5.68 % of base) : 616392.dasm - Microsoft.CodeAnalysis.SpecialTypeExtensions:FromRuntimeTypeOfLiteralValue(System.Object):byte (Tier1)
          16 (4.73 % of base) : 109454.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
          20 (3.95 % of base) : 618416.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
          14 (3.62 % of base) : 331935.dasm - System.Threading.Tasks.Task:FinishSlow(ubyte):this (Tier1)
          15 (3.15 % of base) : 58347.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
          11 (3.04 % of base) : 169315.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet:MergeGlobalConfigs(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.AnalyzerConfig],byref):Microsoft.CodeAnalysis.AnalyzerConfigSet+GlobalAnalyzerConfig (Tier1)
          10 (2.94 % of base) : 319222.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this (Tier1)
           8 (2.69 % of base) : 66261.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
          10 (2.62 % of base) : 483805.dasm - System.Reflection.Emit.SignatureHelper:InternalGetSignatureArray():ubyte[]:this (Tier1)
           6 (2.28 % of base) : 203024.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
           6 (2.28 % of base) : 69443.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
           6 (2.28 % of base) : 30675.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
          43 (2.19 % of base) : 142267.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
           7 (2.15 % of base) : 656880.dasm - System.Threading.ThreadPool:QueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte (Tier1)
          15 (2.14 % of base) : 167212.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetAttributeBinder(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax],Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          12 (1.90 % of base) : 198341.dasm - System.Collections.Concurrent.ConcurrentQueue`1[int]:CopyTo(int[],int):this (Tier1)
          12 (1.60 % of base) : 41134.dasm - System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:AddRange(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]):this (Tier1)
          10 (1.53 % of base) : 498635.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryTypeConverter:TypeFromInfo(int,System.Object,System.Runtime.Serialization.Formatters.Binary.ObjectReader,System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo,byref,byref,byref,byref) (Tier1)
          30 (1.53 % of base) : 68734.dasm - System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this (Tier1)
          10 (1.49 % of base) : 449542.dasm - System.Reflection.RuntimeAssembly:InternalLoad(System.Reflection.AssemblyName,byref,System.Runtime.Loader.AssemblyLoadContext,System.Reflection.RuntimeAssembly,ubyte):System.Reflection.RuntimeAssembly (Tier1)

Top method improvements (percentages):
         -16 (-6.35 % of base) : 626490.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte):this (Tier1)
         -33 (-5.03 % of base) : 166205.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__85:MoveNext():ubyte:this (Tier1)
         -13 (-3.99 % of base) : 632219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
         -10 (-3.82 % of base) : 619265.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]):Microsoft.CodeAnalysis.CSharp.BoundStatementList:this (Tier1)
         -13 (-3.41 % of base) : 624390.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier1)
          -4 (-3.01 % of base) : 634051.dasm - Microsoft.CodeAnalysis.CSharp.BoundMultipleLocalDeclarations:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],ubyte):this (Tier1)
          -4 (-3.01 % of base) : 619179.dasm - Microsoft.CodeAnalysis.CSharp.BoundStatementList:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -4 (-3.01 % of base) : 624492.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeOrInstanceInitializers:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this (Tier1)
          -4 (-2.88 % of base) : 627642.dasm - Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte):this (Tier1)
         -12 (-2.85 % of base) : 197859.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 219017.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 501173.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 528513.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 208220.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 318005.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 460192.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.85 % of base) : 539792.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -12 (-2.74 % of base) : 460198.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
          -4 (-2.67 % of base) : 631164.dasm - Microsoft.CodeAnalysis.CSharp.BoundArrayInitialization:.ctor(Microsoft.CodeAnalysis.SyntaxNode,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):this (Tier1)