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 (-988 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm64.checked.mch |
80,093,036 |
-8 |
coreclr_tests.run.linux.arm64.checked.mch |
508,732,332 |
-480 |
libraries_tests.run.linux.arm64.Release.mch |
395,709,692 |
-500 |
FullOpts (-988 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm64.checked.mch |
54,158,252 |
-8 |
coreclr_tests.run.linux.arm64.checked.mch |
160,584,180 |
-480 |
libraries_tests.run.linux.arm64.Release.mch |
180,577,740 |
-500 |
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.Span
1[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.KeyValuePair
2[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:
...
-8 (-2.11%) : 330149.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
@@ -35,7 +35,7 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cmp w2, #2
- bhi G_M28334_IG07
+ bhi G_M28334_IG05
mov w2, w2
adr x3, [@RWD00]
ldr w3, [x3, x2, LSL #2]
@@ -46,24 +46,12 @@ G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M28334_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
b G_M28334_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28334_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x1C]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x18]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -95,10 +83,20 @@ G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
; gcr arg pop 0
- brk_unix #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
+ ldrsw x2, [x0, #0x1C]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ b G_M28334_IG08
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldrsw x2, [x0, #0x18]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, #0xD1FFAB1E
cmp x1, x2
bhi G_M28334_IG10
@@ -186,11 +184,11 @@ G_M28334_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dd G_M28334_IG03 - G_M28334_IG02
- dd G_M28334_IG04 - G_M28334_IG02
- dd G_M28334_IG05 - G_M28334_IG02
+ dd G_M28334_IG06 - G_M28334_IG02
+ dd G_M28334_IG07 - G_M28334_IG02
-; Total bytes of code 380, prolog size 20, PerfScore 20.00, instruction count 95, allocated bytes for code 380 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 372, prolog size 20, PerfScore 20.00, instruction count 93, allocated bytes for code 372 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================
Unwind Info:
@@ -201,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 69 (0x00045) Actual length = 276 (0x000114)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+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+ArrayBasedLinkedQueue
1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair
2[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.Nullable
1[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 |
115 |
54 |
16 |
45 |
-892 |
+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 |
435 |
126 |
56 |
253 |
-764 |
+264 |
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 |
|
573 |
181 |
73 |
319 |
-1,668 |
+680 |
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: 80093036 (overridden on cmd)
Total bytes of diff: 80093028 (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: 508731852 (overridden on cmd)
Total bytes of delta: -480 (-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 : 450573.dasm (0.48 % of base)
4 : 247932.dasm (1.30 % of base)
4 : 247987.dasm (2.86 % of base)
4 : 248027.dasm (1.35 % 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 : 248029.dasm (-10.87 % of base)
-20 : 248032.dasm (-5.10 % of base)
-16 : 247964.dasm (-4.04 % of base)
-16 : 248028.dasm (-6.67 % of base)
-16 : 606916.dasm (-3.77 % of base)
-12 : 247909.dasm (-5.66 % of base)
-12 : 248026.dasm (-4.35 % of base)
-12 : 247900.dasm (-4.55 % of base)
-12 : 248011.dasm (-3.19 % of base)
-8 : 247893.dasm (-2.67 % of base)
-8 : 247914.dasm (-2.78 % of base)
-8 : 247933.dasm (-2.56 % of base)
46 total files with Code Size differences (30 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.11 % of base) : 504374.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
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: 395709692 (overridden on cmd)
Total bytes of diff: 395709192 (overridden on cmd)
Total bytes of delta: -500 (-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 : 724841.dasm (1.69 % of base)
8 : 181306.dasm (0.29 % of base)
8 : 569175.dasm (0.77 % of base)
8 : 202496.dasm (1.18 % of base)
8 : 631148.dasm (0.43 % of base)
4 : 176769.dasm (1.00 % of base)
4 : 551532.dasm (0.40 % of base)
4 : 681876.dasm (0.85 % of base)
4 : 699960.dasm (2.63 % of base)
4 : 95756.dasm (0.45 % of base)
4 : 245004.dasm (0.42 % of base)
4 : 537149.dasm (0.52 % of base)
4 : 682534.dasm (1.22 % of base)
4 : 187863.dasm (0.52 % of base)
4 : 509672.dasm (0.44 % of base)
4 : 738221.dasm (0.45 % of base)
4 : 244485.dasm (0.45 % of base)
4 : 272120.dasm (0.17 % of base)
Top file improvements (bytes):
-36 : 175124.dasm (-4.11 % of base)
-16 : 181212.dasm (-1.91 % of base)
-16 : 578872.dasm (-2.01 % of base)
-16 : 209755.dasm (-3.74 % of base)
-12 : 629470.dasm (-1.15 % of base)
-12 : 69655.dasm (-0.91 % of base)
-12 : 7948.dasm (-0.92 % of base)
-8 : 629913.dasm (-0.60 % of base)
-8 : 707704.dasm (-2.11 % of base)
-8 : 200519.dasm (-1.52 % of base)
-8 : 208352.dasm (-1.52 % of base)
-8 : 272110.dasm (-1.52 % of base)
-8 : 497933.dasm (-1.52 % of base)
-8 : 589183.dasm (-1.52 % of base)
-8 : 629849.dasm (-0.60 % of base)
-8 : 629893.dasm (-0.60 % of base)
-8 : 192566.dasm (-1.52 % of base)
-8 : 200023.dasm (-1.52 % of base)
-8 : 270505.dasm (-1.02 % of base)
-8 : 312629.dasm (-0.65 % 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) : 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.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.52 % of base) : 537149.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (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.45 % of base) : 95756.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.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 (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.91 % of base) : 69655.dasm - System.Text.RegularExpressions.RegexParser:AddGroup():this (Tier1)
-12 (-0.92 % of base) : 7948.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 (-2.11 % of base) : 707704.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 330149.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 389029.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 404419.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 459390.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long: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) : 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) : 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)
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) : 537149.dasm - System.Collections.Generic.GenericArraySortHelper`1[uint]:IntroSort(System.Span`1[uint],int) (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.50 % of base) : 290429.dasm - System.Decimal+DecCalc:VarDecMod(byref,byref) (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.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) : 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.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)
-8 (-2.11 % of base) : 707704.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 330149.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 389029.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 404419.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 459390.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long: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) : 208352.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) : 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) : 200023.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) : 200519.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
-8 (-1.52 % of base) : 272110.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) : 71281.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
-4 (-1.18 % of base) : 30410.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):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 (+817 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.x64.checked.mch |
71,579,613 |
-4 |
coreclr_tests.run.linux.x64.checked.mch |
403,711,649 |
+174 |
libraries_tests.run.linux.x64.Release.mch |
337,125,087 |
+647 |
FullOpts (+817 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.x64.checked.mch |
47,779,624 |
-4 |
coreclr_tests.run.linux.x64.checked.mch |
123,957,189 |
+174 |
libraries_tests.run.linux.x64.Release.mch |
153,365,478 |
+647 |
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.IEqualityComparer
1[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.Span
1[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.Span
1[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.Span
1[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.Span
1[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.Span
1[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.ImmutableArray
1[Microsoft.Cci.UsedNamespaceOrType]]:GetOrAdd(System.__Canon,System.Collections.Immutable.ImmutableArray1[Microsoft.Cci.UsedNamespaceOrType]):System.Collections.Immutable.ImmutableArray
1[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 |
112 |
41 |
49 |
22 |
-556 |
+730 |
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 |
481 |
150 |
227 |
104 |
-1,014 |
+1,661 |
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 |
|
628 |
197 |
286 |
145 |
-1,599 |
+2,416 |
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: 71579613 (overridden on cmd)
Total bytes of diff: 71579609 (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 : 109214.dasm (1.73 % of base)
3 : 46009.dasm (0.42 % of base)
3 : 140216.dasm (0.42 % of base)
3 : 115713.dasm (1.73 % of base)
2 : 97575.dasm (1.46 % of base)
2 : 22516.dasm (0.57 % of base)
2 : 87247.dasm (0.54 % 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 : 122292.dasm (-1.66 % of base)
-4 : 127652.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) : 46009.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):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)
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) : 122292.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (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.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) : 46009.dasm - System.Text.RegularExpressions.RegexRunner:InitializeForScan(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int):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)
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) : 122292.dasm - System.Collections.Generic.ArraySortHelper`1[int]:SwapIfGreater(System.Span`1[int],System.Comparison`1[int],int,int) (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)
-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: 403711649 (overridden on cmd)
Total bytes of diff: 403711823 (overridden on cmd)
Total bytes of delta: 174 (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 : 287547.dasm (13.26 % of base)
24 : 287494.dasm (9.76 % of base)
24 : 397788.dasm (2.14 % of base)
23 : 287483.dasm (2.21 % of base)
20 : 396891.dasm (1.78 % of base)
19 : 287465.dasm (4.39 % of base)
18 : 388443.dasm (1.75 % of base)
18 : 287472.dasm (14.17 % 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 : 287568.dasm (-10.37 % of base)
-28 : 287497.dasm (-9.72 % of base)
-24 : 287437.dasm (-9.41 % of base)
-20 : 287466.dasm (-12.20 % of base)
-20 : 287589.dasm (-7.30 % of base)
-20 : 287493.dasm (-5.67 % 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)
-11 : 361316.dasm (-1.92 % of base)
-7 : 287492.dasm (-3.23 % of base)
-7 : 287508.dasm (-2.13 % of base)
-7 : 287490.dasm (-3.15 % of base)
-7 : 393185.dasm (-1.16 % of base)
-6 : 287451.dasm (-5.45 % of base)
55 total files with Code Size differences (29 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)
-11 (-1.92 % of base) : 361316.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodCore(System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.MethodBuilder:this (Tier1)
-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)
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: 337125087 (overridden on cmd)
Total bytes of diff: 337125734 (overridden on cmd)
Total bytes of delta: 647 (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 : 191584.dasm (1.01 % of base)
23 : 243167.dasm (11.11 % of base)
23 : 693278.dasm (6.48 % of base)
22 : 430529.dasm (0.49 % of base)
21 : 35510.dasm (2.47 % of base)
21 : 556267.dasm (0.42 % of base)
20 : 488116.dasm (2.13 % of base)
20 : 667324.dasm (1.64 % of base)
19 : 290263.dasm (2.53 % of base)
19 : 359651.dasm (5.03 % of base)
19 : 428138.dasm (2.55 % of base)
18 : 607515.dasm (2.94 % of base)
17 : 428882.dasm (0.41 % of base)
17 : 715850.dasm (3.74 % of base)
17 : 186614.dasm (3.74 % 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 : 337652.dasm (-1.67 % of base)
-13 : 641208.dasm (-1.46 % of base)
-13 : 641594.dasm (-1.46 % of base)
-13 : 641632.dasm (-1.43 % of base)
-13 : 700973.dasm (-3.02 % of base)
-13 : 194793.dasm (-2.34 % of base)
-12 : 271376.dasm (-1.90 % of base)
-12 : 465084.dasm (-1.19 % of base)
-12 : 588924.dasm (-1.90 % of base)
-12 : 649975.dasm (-0.93 % of base)
-12 : 68278.dasm (-1.23 % of base)
-11 : 218083.dasm (-2.55 % of base)
-11 : 227580.dasm (-2.55 % of base)
58 total files with Code Size differences (30 improved, 28 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)
21 (0.42 % of base) : 556267.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():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.53 % of base) : 290263.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier1)
19 (2.55 % of base) : 428138.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) : 715850.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
17 (3.74 % of base) : 186614.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)
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) : 227580.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) : 715850.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
17 (3.74 % of base) : 186614.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) : 101323.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
7 (2.49 % of base) : 260524.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) : 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) : 335121.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) : 554571.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.55 % of base) : 209251.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,196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.osx.arm64.checked.mch |
34,442,120 |
+4 |
coreclr_tests.run.osx.arm64.checked.mch |
486,418,056 |
-704 |
libraries_tests.run.osx.arm64.Release.mch |
324,596,696 |
-496 |
FullOpts (-1,196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.osx.arm64.checked.mch |
18,140,820 |
+4 |
coreclr_tests.run.osx.arm64.checked.mch |
153,805,132 |
-704 |
libraries_tests.run.osx.arm64.Release.mch |
120,880,848 |
-496 |
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
+0 (0.00%) : 65589.dasm - System.Collections.Generic.ArraySortHelper1[System.Collections.IntStruct]:SwapIfGreater(System.Span
1[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%) : 68061.dasm - Interop+CoreFoundation:CFGetData(Microsoft.Win32.SafeHandles.SafeCFDataHandle):ubyte
@@ -52,14 +52,14 @@ G_M21612_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
;; size=4 bbWeight=1 PerfScore 1.00
G_M21612_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x1D]
- cbz w1, G_M21612_IG07
+ cbz w1, G_M21612_IG09
;; size=8 bbWeight=1 PerfScore 4.00
G_M21612_IG04: ; bbWeight=5.88, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x1, x0, #24
; byrRegs +[x1]
ldar w1, [x1]
; byrRegs -[x1]
- tbnz w1, #0, G_M21612_IG09
+ tbnz w1, #0, G_M21612_IG07
;; size=12 bbWeight=5.88 PerfScore 26.47
G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x2, x0, #24
@@ -91,8 +91,8 @@ G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov x20, x0
cmp x19, w19, SXTW
- bne G_M21612_IG08
- tbnz w19, #31, G_M21612_IG06
+ bne G_M21612_IG06
+ tbnz w19, #31, G_M21612_IG08
cbz w19, G_M21612_IG10
sxtw x1, w19
movz x0, #0xD1FFAB1E
@@ -121,6 +121,21 @@ G_M21612_IG05: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
;; size=160 bbWeight=1 PerfScore 37.00
G_M21612_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
+ bl CORINFO_HELP_OVERFLOW
+ ; gcr arg pop 0
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M21612_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
+ movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ brk_unix #0
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M21612_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -129,7 +144,7 @@ G_M21612_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M21612_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21612_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -146,23 +161,8 @@ G_M21612_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
b G_M21612_IG04
;; size=52 bbWeight=0 PerfScore 0.00
-G_M21612_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- bl CORINFO_HELP_OVERFLOW
- ; gcr arg pop 0
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M21612_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- ; gcr arg pop 0
- brk_unix #0
- ;; size=24 bbWeight=0 PerfScore 0.00
G_M21612_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #1 LSL #32
+0 (0.00%) : 71053.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[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%) : 83388.dasm - System.Collections.Generic.ArraySortHelper1[int]:SwapIfGreater(System.Span
1[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.Span
1[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.IEqualityComparer
1[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.ArraySegment
1[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+ArrayBasedLinkedQueue
1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair
2[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 |
26 |
0 |
1 |
25 |
-0 |
+4 |
benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.osx.arm64.checked.mch |
98 |
51 |
11 |
36 |
-832 |
+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 |
371 |
89 |
30 |
252 |
-656 |
+160 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
495 |
140 |
42 |
313 |
-1,488 |
+292 |
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: 34442120 (overridden on cmd)
Total bytes of diff: 34442124 (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), 25 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: 486417352 (overridden on cmd)
Total bytes of delta: -704 (-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 : 214393.dasm (0.48 % of base)
4 : 296034.dasm (1.30 % of base)
4 : 296130.dasm (1.35 % of base)
4 : 296089.dasm (2.86 % 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 : 285327.dasm (-2.11 % of base)
-8 : 296006.dasm (-2.67 % of base)
-8 : 269655.dasm (-2.11 % of base)
-8 : 296053.dasm (-1.80 % of base)
-8 : 296093.dasm (-1.85 % of base)
-8 : 294825.dasm (-2.11 % of base)
40 total files with Code Size differences (29 improved, 11 regressed), 24 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 (-1.80 % of base) : 296053.dasm - System.Diagnostics.Tracing.EventPipeEventProvider:Register(System.Diagnostics.Tracing.EventSource):this (FullOpts)
-8 (-2.11 % of base) : 285327.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 269655.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 294825.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.67 % of base) : 296006.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (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: 324596696 (overridden on cmd)
Total bytes of diff: 324596200 (overridden on cmd)
Total bytes of delta: -496 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 275767.dasm (1.22 % of base)
16 : 148882.dasm (0.64 % of base)
8 : 171130.dasm (1.11 % of base)
8 : 544132.dasm (0.49 % of base)
8 : 627366.dasm (1.69 % of base)
8 : 543151.dasm (0.43 % of base)
4 : 126303.dasm (0.06 % of base)
4 : 202937.dasm (0.50 % of base)
4 : 327085.dasm (0.44 % of base)
4 : 390918.dasm (0.52 % of base)
4 : 544226.dasm (0.18 % of base)
4 : 246371.dasm (0.42 % of base)
4 : 281375.dasm (0.43 % of base)
4 : 320043.dasm (0.43 % of base)
4 : 327084.dasm (0.32 % of base)
4 : 349435.dasm (0.30 % of base)
4 : 48506.dasm (0.41 % of base)
4 : 492391.dasm (0.52 % 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 : 290352.dasm (-3.77 % of base)
-16 : 341686.dasm (-2.82 % of base)
-16 : 375414.dasm (-3.77 % of base)
-16 : 202778.dasm (-2.34 % of base)
-16 : 426409.dasm (-3.77 % of base)
-16 : 432654.dasm (-3.77 % of base)
-16 : 267668.dasm (-3.77 % of base)
-16 : 350433.dasm (-3.77 % of base)
-16 : 371310.dasm (-3.77 % of base)
-12 : 177905.dasm (-2.94 % of base)
-12 : 542614.dasm (-0.89 % of base)
-12 : 542616.dasm (-0.89 % of base)
-12 : 542617.dasm (-0.89 % of base)
-12 : 202664.dasm (-4.48 % of base)
-12 : 220822.dasm (-1.26 % of base)
-12 : 277466.dasm (-0.89 % of base)
-12 : 466753.dasm (-0.23 % of base)
53 total files with Code Size differences (27 improved, 26 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.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) : 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.52 % of base) : 331113.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)
4 (0.43 % of base) : 320043.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) : 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) : 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 (-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) : 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 (-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.23 % of base) : 466753.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():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)
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) : 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.52 % of base) : 331113.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)
4 (0.44 % of base) : 327085.dasm - System.Net.HttpListener:RemoveConnection(System.Net.HttpConnection):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)
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)
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) : 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) : 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 (-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) : 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)
-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 (-2.11 % of base) : 491028.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 349228.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-1.59 % of base) : 180295.dasm - System.Collections.Concurrent.ConcurrentBag`1[int]:CreateWorkStealingQueueForCurrentThread():System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]: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) : 241207.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) : 179909.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (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 (-1,000 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.arm64.checked.mch |
45,573,032 |
-152 |
coreclr_tests.run.windows.arm64.checked.mch |
495,271,268 |
-700 |
libraries_tests.run.windows.arm64.Release.mch |
330,811,128 |
-148 |
FullOpts (-1,000 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.arm64.checked.mch |
29,561,636 |
-152 |
coreclr_tests.run.windows.arm64.checked.mch |
156,582,164 |
-700 |
libraries_tests.run.windows.arm64.Release.mch |
127,377,532 |
-148 |
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.IEqualityComparer
1[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.IEqualityComparer
1[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.IEqualityComparer
1[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.Span
1[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
...
-8 (-2.11%) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
@@ -35,7 +35,7 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cmp w2, #2
- bhi G_M28334_IG07
+ bhi G_M28334_IG05
mov w2, w2
adr x3, [@RWD00]
ldr w3, [x3, x2, LSL #2]
@@ -46,24 +46,12 @@ G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M28334_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
b G_M28334_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28334_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x1C]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x18]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -95,10 +83,20 @@ G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
; gcr arg pop 0
- brk_windows #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
+ ldrsw x2, [x0, #0x1C]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ b G_M28334_IG08
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldrsw x2, [x0, #0x18]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, #0xD1FFAB1E
cmp x1, x2
bhi G_M28334_IG10
@@ -186,11 +184,11 @@ G_M28334_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dd G_M28334_IG03 - G_M28334_IG02
- dd G_M28334_IG04 - G_M28334_IG02
- dd G_M28334_IG05 - G_M28334_IG02
+ dd G_M28334_IG06 - G_M28334_IG02
+ dd G_M28334_IG07 - G_M28334_IG02
-; Total bytes of code 380, prolog size 20, PerfScore 20.00, instruction count 95, allocated bytes for code 380 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 372, prolog size 20, PerfScore 20.00, instruction count 93, allocated bytes for code 372 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================
Unwind Info:
@@ -201,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 69 (0x00045) Actual length = 276 (0x000114)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-2.11%) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
@@ -35,7 +35,7 @@ G_M28334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cmp w2, #2
- bhi G_M28334_IG07
+ bhi G_M28334_IG05
mov w2, w2
adr x3, [@RWD00]
ldr w3, [x3, x2, LSL #2]
@@ -46,24 +46,12 @@ G_M28334_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M28334_IG03: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
b G_M28334_IG08
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28334_IG04: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x1C]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG05: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldrsw x2, [x0, #0x18]
- adds x1, x1, x2
- bvs G_M28334_IG06
- b G_M28334_IG08
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M28334_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28334_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -95,10 +83,20 @@ G_M28334_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
; gcr arg pop 0
- brk_windows #0
- ;; size=80 bbWeight=0 PerfScore 0.00
-G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M28334_IG06: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
+ ldrsw x2, [x0, #0x1C]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ b G_M28334_IG08
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28334_IG07: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldrsw x2, [x0, #0x18]
+ adds x1, x1, x2
+ bvs G_M28334_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28334_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, #0xD1FFAB1E
cmp x1, x2
bhi G_M28334_IG10
@@ -186,11 +184,11 @@ G_M28334_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=80 bbWeight=0 PerfScore 0.00
RWD00 dd G_M28334_IG03 - G_M28334_IG02
- dd G_M28334_IG04 - G_M28334_IG02
- dd G_M28334_IG05 - G_M28334_IG02
+ dd G_M28334_IG06 - G_M28334_IG02
+ dd G_M28334_IG07 - G_M28334_IG02
-; Total bytes of code 380, prolog size 20, PerfScore 20.00, instruction count 95, allocated bytes for code 380 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
+; Total bytes of code 372, prolog size 20, PerfScore 20.00, instruction count 93, allocated bytes for code 372 (MethodHash=db819151) for method System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
; ============================================================
Unwind Info:
@@ -201,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 69 (0x00045) Actual length = 276 (0x000114)
---- 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+ArrayBasedLinkedQueue
1[System.Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Collections.Generic.KeyValuePair2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader]]:Enqueue(System.Collections.Generic.KeyValuePair
2[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 |
89 |
43 |
12 |
34 |
-840 |
+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 |
180 |
45 |
14 |
121 |
-280 |
+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 |
|
304 |
101 |
26 |
177 |
-1,272 |
+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: 45573032 (overridden on cmd)
Total bytes of diff: 45572880 (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 : 38757.dasm (-3.77 % of base)
-16 : 51218.dasm (-3.77 % of base)
-16 : 66198.dasm (-3.77 % of base)
-16 : 71937.dasm (-3.77 % of base)
-16 : 91985.dasm (-3.77 % of base)
-16 : 89852.dasm (-3.77 % of base)
-16 : 66291.dasm (-3.77 % of base)
-16 : 73390.dasm (-3.77 % of base)
-8 : 50201.dasm (-0.73 % of base)
-4 : 64089.dasm (-2.50 % of base)
-4 : 50202.dasm (-0.41 % of base)
-4 : 48459.dasm (-0.94 % of base)
-4 : 51172.dasm (-0.94 % of base)
13 total files with Code Size differences (13 improved, 0 regressed), 22 unchanged.
Top method improvements (bytes):
-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) : 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) : 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)
-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) : 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)
-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) : 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) : 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) : 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)
-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) : 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)
-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: 495270568 (overridden on cmd)
Total bytes of delta: -700 (-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 : 250324.dasm (3.39 % of base)
16 : 250237.dasm (5.56 % of base)
12 : 250194.dasm (4.35 % of base)
8 : 586569.dasm (0.88 % of base)
8 : 591375.dasm (0.88 % of base)
8 : 250217.dasm (2.44 % of base)
8 : 250234.dasm (2.47 % of base)
4 : 250229.dasm (1.30 % of base)
4 : 250328.dasm (1.35 % 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 : 250262.dasm (-4.04 % of base)
-16 : 250329.dasm (-6.67 % of base)
-16 : 582444.dasm (-3.77 % of base)
-16 : 583128.dasm (-3.77 % of base)
-12 : 250210.dasm (-4.55 % of base)
-12 : 250312.dasm (-3.19 % of base)
-12 : 250327.dasm (-4.35 % of base)
-8 : 250289.dasm (-1.85 % of base)
-8 : 250335.dasm (-3.08 % of base)
-8 : 488327.dasm (-2.11 % of base)
42 total files with Code Size differences (30 improved, 12 regressed), 23 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: 330811128 (overridden on cmd)
Total bytes of diff: 330810980 (overridden on cmd)
Total bytes of delta: -148 (-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 : 366369.dasm (0.56 % of base)
8 : 633055.dasm (1.69 % of base)
8 : 363319.dasm (0.63 % of base)
8 : 638273.dasm (0.84 % of base)
4 : 125949.dasm (0.40 % of base)
4 : 368049.dasm (0.49 % of base)
4 : 506055.dasm (0.50 % of base)
4 : 506587.dasm (0.46 % of base)
4 : 512128.dasm (0.38 % of base)
4 : 47243.dasm (0.43 % of base)
4 : 83928.dasm (0.43 % of base)
Top file improvements (bytes):
-36 : 156125.dasm (-4.11 % of base)
-20 : 386986.dasm (-1.67 % of base)
-12 : 407229.dasm (-0.89 % of base)
-8 : 278222.dasm (-2.11 % of base)
-8 : 297556.dasm (-1.52 % of base)
-8 : 358041.dasm (-2.11 % of base)
-8 : 504831.dasm (-1.52 % of base)
-8 : 163240.dasm (-0.97 % of base)
-8 : 176717.dasm (-1.49 % of base)
-8 : 404757.dasm (-0.78 % of base)
-8 : 157172.dasm (-0.82 % of base)
-8 : 296605.dasm (-0.78 % of base)
-8 : 297820.dasm (-2.11 % of base)
-8 : 523892.dasm (-1.52 % of base)
-4 : 524097.dasm (-0.36 % of base)
-4 : 80557.dasm (-0.42 % of base)
-4 : 109306.dasm (-1.14 % of base)
-4 : 595149.dasm (-0.70 % of base)
-4 : 613071.dasm (-0.63 % of base)
-4 : 613960.dasm (-0.64 % of base)
38 total files with Code Size differences (24 improved, 14 regressed), 24 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)
-12 (-0.89 % of base) : 407229.dasm - System.Xml.XmlTextReaderImpl:FinishPartialValue():this (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 (-2.11 % of base) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 297820.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (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) : 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)
-8 (-1.52 % of base) : 523892.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.46 % of base) : 197549.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (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 (-0.64 % of base) : 613960.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Reflection.Metadata.DocumentHandle]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-4 (-0.63 % of base) : 613071.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[int,System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte: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)
-8 (-2.11 % of base) : 278222.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 358041.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
-8 (-2.11 % of base) : 297820.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long: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) : 504831.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)
-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)
-12 (-0.89 % of base) : 407229.dasm - System.Xml.XmlTextReaderImpl:FinishPartialValue():this (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.64 % of base) : 613960.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Reflection.Metadata.DocumentHandle]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-4 (-0.63 % of base) : 89321.dasm - Microsoft.CodeAnalysis.PEModule:GetConstantFieldValue(System.Reflection.Metadata.FieldDefinitionHandle):Microsoft.CodeAnalysis.ConstantValue:this (Tier1)
-4 (-0.63 % of base) : 613071.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[int,System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (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 (+680 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
47,040,747 |
+54 |
benchmarks.run_pgo.windows.x64.checked.mch |
36,232,814 |
-2 |
coreclr_tests.run.windows.x64.checked.mch |
393,194,106 |
+72 |
libraries_tests.run.windows.x64.Release.mch |
282,128,846 |
+556 |
FullOpts (+680 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
28,549,698 |
+54 |
benchmarks.run_pgo.windows.x64.checked.mch |
22,062,158 |
-2 |
coreclr_tests.run.windows.x64.checked.mch |
120,405,526 |
+72 |
libraries_tests.run.windows.x64.Release.mch |
106,270,612 |
+556 |
Example diffs
aspnet.run.windows.x64.checked.mch
-12 (-1.64%) : 100361.dasm - System.Collections.Generic.ArraySortHelper1[System.__Canon]:IntroSort(System.Span
1[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.Span
1[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.Span
1[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.IEqualityComparer
1[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.Span
1[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.Span
1[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.Span
1[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.Span
1[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.Span
1[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.IEqualityComparer
1[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:
+30 (+5.38%) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
@@ -33,7 +33,7 @@
;
; Lcl frame size = 40
-G_M60318_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M60318_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
sub rsp, 40
@@ -47,17 +47,17 @@ G_M60318_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=12 bbWeight=1 PerfScore 1.25
G_M60318_IG03: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp esi, 0x4000
- jb G_M60318_IG10
+ jb G_M60318_IG11
;; size=12 bbWeight=0.56 PerfScore 0.70
G_M60318_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
cmp esi, 0xD1FFAB1E
- jae G_M60318_IG21
+ jae G_M60318_IG17
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG18
+ je G_M60318_IG14
;; size=27 bbWeight=0.40 PerfScore 3.70
G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
@@ -66,7 +66,7 @@ G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
lea eax, [8*rsi]
add eax, 3
mov byte ptr [rdx+rcx+0x10], al
@@ -74,7 +74,7 @@ G_M60318_IG05: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG19
+ je G_M60318_IG15
;; size=50 bbWeight=0.40 PerfScore 7.70
G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
@@ -83,7 +83,7 @@ G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
mov eax, esi
shr eax, 5
mov byte ptr [rdx+rcx+0x10], al
@@ -91,7 +91,7 @@ G_M60318_IG06: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je G_M60318_IG20
+ je G_M60318_IG16
;; size=45 bbWeight=0.40 PerfScore 7.70
G_M60318_IG07: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rbx]
@@ -100,72 +100,33 @@ G_M60318_IG07: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae G_M60318_IG14
+ jae G_M60318_IG21
mov eax, esi
shr eax, 13
mov byte ptr [rdx+rcx+0x10], al
- jmp SHORT G_M60318_IG13
+ jmp SHORT G_M60318_IG10
;; size=32 bbWeight=0.40 PerfScore 5.30
-G_M60318_IG08: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M60318_IG08: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG15
- ;; size=11 bbWeight=0.44 PerfScore 3.52
-G_M60318_IG09: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ je G_M60318_IG22
+ ;; size=15 bbWeight=0.44 PerfScore 3.52
+G_M60318_IG09: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov ecx, dword ptr [rbx+0x08]
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x08], eax
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
+ jae G_M60318_IG21
add esi, esi
mov byte ptr [rdx+rcx+0x10], sil
- jmp SHORT G_M60318_IG13
- ;; size=26 bbWeight=0.44 PerfScore 5.61
-G_M60318_IG10: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx]
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov edx, dword ptr [rdx+0x08]
- ; gcrRegs -[rdx]
- cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG16
- ;; size=11 bbWeight=0.16 PerfScore 1.28
-G_M60318_IG11: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x08]
- lea eax, [rcx+0x01]
- mov dword ptr [rbx+0x08], eax
- cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
- lea eax, [4*rsi]
- inc eax
- mov byte ptr [rdx+rcx+0x10], al
- mov rdx, gword ptr [rbx]
- mov edx, dword ptr [rdx+0x08]
- ; gcrRegs -[rdx]
- cmp edx, dword ptr [rbx+0x08]
- je SHORT G_M60318_IG17
- ;; size=41 bbWeight=0.16 PerfScore 3.08
-G_M60318_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, gword ptr [rbx]
- ; gcrRegs +[rdx]
- mov ecx, dword ptr [rbx+0x08]
- lea eax, [rcx+0x01]
- mov dword ptr [rbx+0x08], eax
- cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M60318_IG14
- mov eax, esi
- shr eax, 6
- mov byte ptr [rdx+rcx+0x10], al
- ;; size=26 bbWeight=0.16 PerfScore 1.80
-G_M60318_IG13: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=28 bbWeight=0.44 PerfScore 4.73
+G_M60318_IG10: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx]
; byrRegs -[rbx]
add rsp, 40
@@ -173,51 +134,47 @@ G_M60318_IG13: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rsi
ret
;; size=7 bbWeight=0.44 PerfScore 0.99
-G_M60318_IG14: ; 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_M60318_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG11: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs +[rbx]
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp G_M60318_IG09
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp edx, dword ptr [rbx+0x08]
+ je G_M60318_IG23
+ ;; size=15 bbWeight=0.16 PerfScore 1.28
+G_M60318_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
+ mov ecx, dword ptr [rbx+0x08]
+ lea eax, [rcx+0x01]
+ mov dword ptr [rbx+0x08], eax
+ cmp ecx, dword ptr [rdx+0x08]
+ jae G_M60318_IG21
+ lea eax, [4*rsi]
+ inc eax
+ mov byte ptr [rdx+rcx+0x10], al
+ mov rdx, gword ptr [rbx]
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M60318_IG11
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M60318_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp edx, dword ptr [rbx+0x08]
+ je G_M60318_IG24
+ ;; size=49 bbWeight=0.16 PerfScore 3.08
+G_M60318_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
- mov edx, dword ptr [rdx+0x08]
+ mov ecx, dword ptr [rbx+0x08]
+ lea eax, [rcx+0x01]
+ mov dword ptr [rbx+0x08], eax
+ cmp ecx, dword ptr [rdx+0x08]
+ jae G_M60318_IG21
+ mov eax, esi
+ shr eax, 6
+ mov byte ptr [rdx+rcx+0x10], al
+ jmp SHORT G_M60318_IG10
+ ;; size=32 bbWeight=0.16 PerfScore 2.12
+G_M60318_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx]
- add edx, edx
- mov rcx, rbx
- ; byrRegs +[rcx]
- call [System.Array:Resize[ubyte](byref,int)]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M60318_IG12
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M60318_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -230,7 +187,7 @@ G_M60318_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG05
;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -243,7 +200,7 @@ G_M60318_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG06
;; size=22 bbWeight=0 PerfScore 0.00
-G_M60318_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60318_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov edx, dword ptr [rdx+0x08]
@@ -256,9 +213,9 @@ G_M60318_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
jmp G_M60318_IG07
...
+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.ImmutableArray
1[System.Nullable1[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)
@@ -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.ImmutableArray
1[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.IEqualityComparer
1[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 |
68 |
13 |
23 |
32 |
-96 |
+150 |
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 |
95 |
35 |
39 |
21 |
-462 |
+534 |
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 |
314 |
90 |
154 |
70 |
-531 |
+1,087 |
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 |
|
501 |
147 |
222 |
132 |
-1,121 |
+1,801 |
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: 47040747 (overridden on cmd)
Total bytes of diff: 47040801 (overridden on cmd)
Total bytes of delta: 54 (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 : 79524.dasm (1.72 % of base)
11 : 114046.dasm (3.35 % of base)
7 : 113192.dasm (1.06 % of base)
6 : 28944.dasm (0.86 % of base)
6 : 64764.dasm (0.86 % of base)
6 : 84907.dasm (0.69 % of base)
6 : 22362.dasm (0.69 % of base)
6 : 55084.dasm (0.86 % of base)
6 : 68987.dasm (0.86 % of base)
6 : 117761.dasm (0.69 % of base)
6 : 19951.dasm (0.69 % of base)
6 : 21930.dasm (0.69 % of base)
6 : 116808.dasm (0.69 % of base)
5 : 70932.dasm (0.41 % of base)
4 : 29570.dasm (0.65 % of base)
4 : 33355.dasm (0.90 % of base)
3 : 21933.dasm (0.84 % of base)
3 : 54098.dasm (0.92 % 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 : 116660.dasm (-0.21 % of base)
-9 : 19567.dasm (-0.21 % of base)
-9 : 84280.dasm (-0.21 % of base)
-9 : 22249.dasm (-0.21 % of base)
-9 : 21781.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)
-2 : 84915.dasm (-0.56 % of base)
-1 : 68260.dasm (-0.28 % of base)
36 total files with Code Size differences (13 improved, 23 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) : 64764.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) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):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) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String: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) : 19951.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)
6 (0.69 % of base) : 116808.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.84 % of base) : 21933.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (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) : 116660.dasm - System.Net.Http.HttpConnectionPool+<ConnectAsync>d__103:MoveNext():this (Tier1)
-9 (-0.21 % of base) : 19567.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) : 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)
-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)
-2 (-0.56 % of base) : 84915.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
-1 (-0.28 % of base) : 68260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (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) : 64764.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) : 68987.dasm - Npgsql.MultiplexingDataSource:<MultiplexingWriteLoop>g__Flush|11_1(Npgsql.Internal.NpgsqlConnector,byref):this (Tier1)
3 (0.84 % of base) : 21933.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
3 (0.84 % of base) : 19955.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
2 (0.75 % of base) : 76331.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):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) : 22362.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String: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) : 19951.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)
6 (0.69 % of base) : 116808.dasm - System.Resources.ResourceManager:GetString(System.String,System.Globalization.CultureInfo):System.String:this (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.56 % of base) : 84915.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:TryGetValue(System.__Canon,byref):ubyte:this (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)
-1 (-0.28 % of base) : 68260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (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) : 116660.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)
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: 36232814 (overridden on cmd)
Total bytes of diff: 36232812 (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 : 85608.dasm (-1.69 % of base)
-4 : 35391.dasm (-1.64 % of base)
-4 : 39441.dasm (-1.64 % of base)
-4 : 86915.dasm (-1.69 % 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.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)
-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)
-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) : 85608.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.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: 393194106 (overridden on cmd)
Total bytes of diff: 393194178 (overridden on cmd)
Total bytes of delta: 72 (0.00 % of base)
diff is a regression.
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)
30 : 372160.dasm (5.38 % 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)
10 : 368390.dasm (2.33 % of base)
10 : 371801.dasm (2.33 % of base)
9 : 277825.dasm (4.29 % of base)
8 : 277919.dasm (2.01 % of base)
8 : 371873.dasm (1.07 % 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 : 277873.dasm (-1.30 % of base)
-4 : 277797.dasm (-1.79 % of base)
-3 : 253141.dasm (-1.02 % of base)
52 total files with Code Size differences (28 improved, 24 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)
30 (5.38 % of base) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
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)
10 (2.33 % of base) : 368390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 371801.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
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)
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 (-1.02 % of base) : 253141.dasm - System.Reflection.Internal.ReadOnlyUnmanagedMemoryStream:Seek(long,int):long:this (Tier1)
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)
30 (5.38 % of base) : 372160.dasm - Internal.NativeFormat.NativePrimitiveEncoder:WriteUnsigned(uint):this (Tier1)
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)
10 (2.33 % of base) : 368390.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 371801.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,uint]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
6 (2.32 % of base) : 277857.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (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: 282128846 (overridden on cmd)
Total bytes of diff: 282129402 (overridden on cmd)
Total bytes of delta: 556 (0.00 % of base)
diff is a regression.
relative diff is a regression.
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 : 167212.dasm (2.14 % of base)
15 : 58347.dasm (3.15 % of base)
14 : 173494.dasm (0.64 % of base)
14 : 628010.dasm (2.49 % of base)
14 : 331935.dasm (3.62 % of base)
13 : 82070.dasm (1.45 % of base)
12 : 41134.dasm (1.60 % of base)
12 : 198341.dasm (1.90 % of base)
11 : 617670.dasm (2.33 % of base)
11 : 619830.dasm (2.05 % of base)
11 : 169315.dasm (3.04 % of base)
10 : 319222.dasm (2.94 % of base)
10 : 50322.dasm (2.27 % of base)
Top file improvements (bytes):
-33 : 166205.dasm (-5.03 % of base)
-16 : 626490.dasm (-6.35 % of base)
-15 : 170089.dasm (-2.69 % of base)
-13 : 239711.dasm (-1.00 % of base)
-13 : 632219.dasm (-3.99 % of base)
-13 : 624390.dasm (-3.41 % of base)
-12 : 126281.dasm (-1.53 % of base)
-12 : 318005.dasm (-2.85 % of base)
-12 : 417106.dasm (-1.12 % of base)
-12 : 528513.dasm (-2.85 % of base)
-12 : 208220.dasm (-2.85 % of base)
-12 : 317402.dasm (-1.53 % of base)
-12 : 323180.dasm (-2.85 % of base)
-12 : 197859.dasm (-2.85 % of base)
-12 : 219017.dasm (-2.85 % of base)
-12 : 460192.dasm (-2.85 % of base)
-12 : 460198.dasm (-2.74 % of base)
-12 : 501173.dasm (-2.85 % of base)
-12 : 539792.dasm (-2.85 % of base)
-12 : 603508.dasm (-1.12 % of base)
58 total files with Code Size differences (26 improved, 32 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 (2.49 % of base) : 628010.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:LoopTail(Microsoft.CodeAnalysis.CSharp.BoundLoopStatement):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)
11 (2.33 % of base) : 617670.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.Reflection.Metadata.BlobHandle,System.Collections.Immutable.ImmutableArray`1[ubyte]]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
11 (2.05 % of base) : 619830.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState,ubyte]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.19 % of base) : 298188.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:get_Item(System.__Canon):int:this (Tier1)
10 (2.33 % of base) : 601366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (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)
-15 (-2.69 % of base) : 170089.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IssueDiagnostics(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol) (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) : 318005.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) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (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) : 460192.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) : 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)
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)
14 (2.49 % of base) : 628010.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:LoopTail(Microsoft.CodeAnalysis.CSharp.BoundLoopStatement):this (Tier1)
10 (2.33 % of base) : 601366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.33 % of base) : 256123.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
11 (2.33 % of base) : 617670.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.Reflection.Metadata.BlobHandle,System.Collections.Immutable.ImmutableArray`1[ubyte]]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.32 % of base) : 83366.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.32 % of base) : 51342.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
10 (2.31 % of base) : 63380.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.ValueTuple`2[uint,uint]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
6 (2.28 % of base) : 30675.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) : 203024.dasm - System.Reflection.Emit.SignatureHelper:SetNumberOfSignatureElements(ubyte):this (Tier1)
10 (2.27 % of base) : 50322.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.ValueTuple`2[System.__Canon,int]]]:TryGetValue(System.__Canon,byref):ubyte:this (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) : 318005.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) : 323180.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (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) : 460192.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) : 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)
-15 (-2.69 % of base) : 170089.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:IssueDiagnostics(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol) (Tier1)