Assembly Diffs

linux arm64

Diffs are based on 91,015 contexts (37,196 MinOpts, 53,819 FullOpts).

MISSED contexts: base: 159 (0.11%), diff: 52,639 (35.66%)

Overall (-96,164 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,089,056 -5,884
benchmarks.run_pgo.linux.arm64.checked.mch 2,900,708 -21,028
benchmarks.run_tiered.linux.arm64.checked.mch 2,340,380 -17,388
coreclr_tests.run.linux.arm64.checked.mch 164,096 -48
libraries.pmi.linux.arm64.checked.mch 1,285,304 -5,688
libraries_tests.run.linux.arm64.Release.mch 2,135,476 -21,960
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 1,090,520 -6,984
realworld.run.linux.arm64.checked.mch 1,695,560 -17,184

MinOpts (-46,440 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,064,608 -16,472
benchmarks.run_tiered.linux.arm64.checked.mch 2,103,408 -15,924
libraries_tests.run.linux.arm64.Release.mch 1,696,352 -14,044

FullOpts (-49,724 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 1,044,220 -5,884
benchmarks.run_pgo.linux.arm64.checked.mch 836,100 -4,556
benchmarks.run_tiered.linux.arm64.checked.mch 236,972 -1,464
coreclr_tests.run.linux.arm64.checked.mch 164,096 -48
libraries.pmi.linux.arm64.checked.mch 1,285,304 -5,688
libraries_tests.run.linux.arm64.Release.mch 439,124 -7,916
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 1,090,520 -6,984
realworld.run.linux.arm64.checked.mch 1,681,048 -17,184

Example diffs

benchmarks.run.linux.arm64.checked.mch

-44 (-25.00%) : 6257.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8BytesSystem.__Canon:ubyte

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect" +; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 @@ -33,22 +28,12 @@ G_M31219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M31219_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M31219_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M31219_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M31219_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M31219_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M31219_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M31219_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] @@ -59,27 +44,12 @@ G_M31219_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M31219_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M31219_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M31219_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M31219_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M31219_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M31219_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M31219_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
add x1, fp, #16 // [V01 arg0] mov x2, x20 ; gcrRegs +[x2] @@ -89,14 +59,14 @@ G_M31219_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20] +[x0]
- ;; size=28 bbWeight=1 PerfScore 6.50 -G_M31219_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=96 bbWeight=1 PerfScore 19.00 +G_M31219_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=765d860c) for method System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=765d860c) for method System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-25.00%) : 8676.dasm - System.Text.Json.JsonSerializer:SerializeSystem.__Canon:System.String (FullOpts)

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect" +; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 @@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41289_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M41289_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] @@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M41289_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M41289_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
add x1, fp, #16 // [V01 arg0] mov x2, x20 ; gcrRegs +[x2] @@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20] +[x0]
- ;; size=28 bbWeight=1 PerfScore 6.50 -G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=96 bbWeight=1 PerfScore 19.00 +G_M41289_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 4822.dasm - System.Linq.Enumerable:SetCountAndGetSpanSystem.__Canon:System.Span`1System.__Canon

@@ -7,22 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] mov w21, w2 ;; size=32 bbWeight=1 PerfScore 6.00
-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M26687_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M26687_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] mov w2, w21 @@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M26687_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M26687_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M26687_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 17.50 +G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+4.55%) : 3522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)

@@ -32,7 +32,7 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTINTERFACE
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x19 @@ -40,8 +40,9 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
+ ldr wzr, [x0]
ldr x2, [x11]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 5.50
G_M31221_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -58,7 +59,7 @@ G_M31221_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+4.55%) : 11624.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

@@ -32,7 +32,7 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTINTERFACE
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x19 @@ -40,8 +40,9 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
+ ldr wzr, [x0]
ldr x2, [x11]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 5.50
G_M21263_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -58,7 +59,7 @@ G_M21263_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.25%) : 9291.dasm - System.Linq.Enumerable:gEnumerableToArray|296_0[System.ValueTuple`2[System.Canon,System.Canon]](System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]

@@ -8,33 +8,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP -; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP +; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect" -; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect" -; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup" -; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect" +; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect" +; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 408 @@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=76 bbWeight=1 PerfScore 15.00
-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M13440_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13440_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY
add x1, fp, #0xD1FFAB1E // [V02 loc0]
+ mov x0, x21
mov w2, #8 movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]] movk x3, #0xD1FFAB1E LSL #16 @@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0] str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8] str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]
- ldr x0, [x19, #0x38] - ; byrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M13440_IG08 - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x0, #0x18] - cbz x21, G_M13440_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x21, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x1, x21
+ bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] mov x2, x20 ; gcrRegs +[x2] @@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20]
- mov x1, x21
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this movk x2, #0xD1FFAB1E LSL #16 @@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- mov x19, x0 - ; gcrRegs +[x19] - mov x1, x21 - add x0, fp, #24 // [V03 loc1]
+ mov x20, x0 + ; gcrRegs +[x20] + mov x0, x19
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=96 bbWeight=1 PerfScore 21.00 -G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=248 bbWeight=1 PerfScore 47.50 +G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xD1FFAB1E] ldp x19, x20, [sp, #0xD1FFAB1E] ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
; ============================================================ Unwind Info: @@ -159,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.linux.arm64.checked.mch

-36 (-31.03%) : 7397.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 18986.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 865.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.06%) : 23500.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.20) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.24) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.20) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.40) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.81) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.62) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.62) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.81) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.13) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.20 PerfScore 1.41 -G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.16 PerfScore 0.16 -G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.04 PerfScore 0.12 -G_M58319_IG06: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.20 PerfScore 1.41 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.20 PerfScore 2.62 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 17.61, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 16.62, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+8 (+6.06%) : 24852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.20) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.25) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.20) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.41) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.20) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.82) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.64) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.64) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.82) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.15) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.20 PerfScore 1.43 -G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.16 PerfScore 0.16 -G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.04 PerfScore 0.12 -G_M58319_IG06: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.20 PerfScore 1.43 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.20 PerfScore 2.66 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 17.65, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 16.66, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+16 (+10.53%) : 21928.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable1[System.DateTimeOffset]]():System.Nullable1System.DateTimeOffset

@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0] str x0, [fp, #0x10] // [V04 tmp2]
- ldr x2, [fp, #0x10] // [V04 tmp2] - ; gcrRegs +[x2] - ldr x0, [fp, #0x38] // [V00 RetBuf]
+ ldr x1, [fp, #0x10] // [V04 tmp2] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1]
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - ; byrRegs -[x0] - ;; size=120 bbWeight=1 PerfScore 25.50
+ ldr x1, [fp, #0x38] // [V00 RetBuf] + ; byrRegs +[x1] + ldp x2, x3, [x0] + stp x2, x3, [x1] + ldr x2, [x0, #0x10] + str x2, [x1, #0x10] + ;; size=136 bbWeight=1 PerfScore 34.50
G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
; ============================================================ Unwind Info: @@ -75,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm64.checked.mch

-36 (-31.03%) : 17973.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 12451.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 784.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 20756.dasm - System.Text.RegularExpressions.RegexCache:get_MaxCacheSize():int (Tier0)

@@ -47,9 +47,11 @@ G_M65136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #40
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr w0, [x0]

+8 (+6.06%) : 1425.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -8,84 +8,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def
+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def
; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.40 PerfScore 0.40 -G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.10 PerfScore 0.30 -G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.50 PerfScore 6.50 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -104,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+16 (+10.53%) : 13538.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable1[System.DateTimeOffset]]():System.Nullable1System.DateTimeOffset

@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0] str x0, [fp, #0x10] // [V04 tmp2]
- ldr x2, [fp, #0x10] // [V04 tmp2] - ; gcrRegs +[x2] - ldr x0, [fp, #0x38] // [V00 RetBuf]
+ ldr x1, [fp, #0x10] // [V04 tmp2] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1]
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - ; byrRegs -[x0] - ;; size=120 bbWeight=1 PerfScore 25.50
+ ldr x1, [fp, #0x38] // [V00 RetBuf] + ; byrRegs +[x1] + ldp x2, x3, [x0] + stp x2, x3, [x1] + ldr x2, [x0, #0x10] + str x2, [x1, #0x10] + ;; size=136 bbWeight=1 PerfScore 34.50
G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
; ============================================================ Unwind Info: @@ -75,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm64.checked.mch

-48 (-9.84%) : 321.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (FullOpts)

@@ -7,26 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T06] ( 7, 4.88) long -> x20 single-def -; V01 arg0 [V01,T07] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> x20 single-def +; V01 arg0 [V01,T06] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-; V03 arg2 [V03,T08] ( 4, 4 ) byref -> x22 single-def
+; V03 arg2 [V03,T07] ( 4, 4 ) byref -> x22 single-def
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x20 class-hnd <System.__Canon> -; V06 loc2 [V06,T14] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x23 class-hnd <System.__Canon> +; V06 loc2 [V06,T09] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T09] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T08] ( 3, 6 ) long -> x11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V12 tmp4 [V12,T00] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
-; V13 PSPSym [V13,T15] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V14 cse0 [V14,T05] ( 2, 8.50) long -> x23 hoist "CSE - aggressive" -; V15 cse1 [V15,T04] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive" -; V16 rat0 [V16,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" -; V17 rat1 [V17,T13] ( 3, 2 ) long -> x23 "runtime lookup" -; V18 rat2 [V18,T11] ( 3, 2.80) long -> x0 "spilling expr" -; V19 rat3 [V19,T12] ( 3, 2.24) long -> x23 "fgMakeTemp is creating a new local variable"
+; V13 PSPSym [V13,T10] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T05] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive"
; ; Lcl frame size = 40 @@ -47,27 +42,17 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x22, x3 ; byrRegs +[x22] ;; size=48 bbWeight=1 PerfScore 9.00
-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; GC ptr vars +{V06 V14} - cbz x21, G_M62024_IG21 - cbz x19, G_M62024_IG22 - ldr x0, [x20, #0x38] - ldr x11, [x0, #0x10] - cbz x11, G_M62024_IG04 - ;; size=20 bbWeight=1 PerfScore 9.00 -G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - b G_M62024_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; GC ptr vars +{V06} + cbz x21, G_M62024_IG14 + cbz x19, G_M62024_IG15
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov x11, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
mov x0, x21 ; gcrRegs +[x0] ldr x1, [x11] @@ -76,9 +61,8 @@ G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 ; gcr arg pop 0 str x0, [fp, #0x20] // [V04 loc0] ; GC ptr vars +{V04}
- ;; size=16 bbWeight=1 PerfScore 5.50 -G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; GC ptr vars -{V14}
+ ;; size=48 bbWeight=1 PerfScore 11.00 +G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
movz x21, #24 movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 @@ -87,69 +71,53 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M62024_IG14
+ cbz w0, G_M62024_IG07
;; size=28 bbWeight=1 PerfScore 7.00
-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ldr x0, [x20, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M62024_IG10 - ;; size=16 bbWeight=0.50 PerfScore 3.75 -G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ldr x23, [x0, #0x18] - cbz x23, G_M62024_IG10 - ;; size=8 bbWeight=0.40 PerfScore 1.60 -G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - b G_M62024_IG11 - ;; size=4 bbWeight=0.32 PerfScore 0.32 -G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M62024_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x23, x0 - ;; size=24 bbWeight=0.18 PerfScore 0.63 -G_M62024_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - mov x11, x23
+ mov x11, x0
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] ldr x1, [x11] blr x1 ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - mov x1, x20
+ mov x23, x0 + ; gcrRegs +[x23] + mov x1, x23
; gcrRegs +[x1] ldr x0, [x19, #0x08] ldr x2, [x19, #0x18] blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M62024_IG13
+ cbnz w0, G_M62024_IG06
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] mov x11, x21 ldr x1, [x11] blr x1
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x23]
; gcr arg pop 0
- cbnz w0, G_M62024_IG11 - ;; size=60 bbWeight=8 PerfScore 184.00 -G_M62024_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ cbnz w0, G_M62024_IG04 + ;; size=80 bbWeight=8 PerfScore 208.00 +G_M62024_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG14
+ b G_M62024_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M62024_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x20]
+G_M62024_IG06: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref + ; gcrRegs +[x23]
mov w0, #1 strb w0, [x22]
- str x20, [fp, #0x18] // [V06 loc2] - b G_M62024_IG15
+ str x23, [fp, #0x18] // [V06 loc2] + b G_M62024_IG08
;; size=16 bbWeight=1 PerfScore 3.50
-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref - ; gcrRegs -[x20]
+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref + ; gcrRegs -[x23]
; GC ptr vars -{V06} ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] @@ -159,44 +127,44 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M62024_IG19
+ b G_M62024_IG12
;; size=20 bbWeight=1 PerfScore 7.50
-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22]
- ; GC ptr vars +{V02 V04 V06 V14}
+ ; GC ptr vars +{V02 V04 V06}
ldr x0, [fp, #0x30] // [V13 PSPSym]
- bl G_M62024_IG23
+ bl G_M62024_IG16
;; size=8 bbWeight=1 PerfScore 3.00
-G_M62024_IG16: ; bbWeight=1, nogc, extend
+G_M62024_IG09: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02 V04 V14}
+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V02 V04}
ldr x0, [fp, #0x18] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x0] ; byrRegs +[x22] ; GC ptr vars -{V06} strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22] mov w0, #17 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) @@ -207,7 +175,7 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -217,8 +185,8 @@ G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V04 V06 V14}
+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V04 V06}
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -226,21 +194,21 @@ G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs add x3, fp, #96 str x3, [sp, #0x10] ;; size=24 bbWeight=1 PerfScore 5.50
-G_M62024_IG24: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...

libraries.pmi.linux.arm64.checked.mch

-24 (-27.27%) : 13521.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerableSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Roslyn.Utilities.SpecializedCollections+ReadOnly+Enumerable`2[System.__Canon,System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M9302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M9302_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M9302_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M9302_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M9302_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M9302_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M9302_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M9302_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M9302_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M9302_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M9302_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=a3eadba9) for method Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=a3eadba9) for method Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 13507.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerableSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Roslyn.Utilities.SpecializedCollections+Singleton+List`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M56400_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M56400_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M56400_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M56400_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M56400_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M56400_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M56400_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M56400_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M56400_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M56400_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M56400_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=5f5123af) for method Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=5f5123af) for method Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-26.83%) : 12762.dasm - Roslyn.Utilities.EnumerableExtensions:AsArraySystem.__Canon:System.__Canon

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 4.88) long -> x19 single-def -; V01 arg0 [V01,T02] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 5, 4.50) long -> x19 single-def +; V01 arg0 [V01,T01] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon[]>
+; V04 tmp2 [V04,T02] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <System.__Canon[]>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp5 [V07,T05] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 tmp6 [V08,T09] ( 2, 2 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T08] ( 3, 2 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T06] ( 3, 2.80) long -> x0 "spilling expr" -; V13 rat4 [V13,T07] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V08 tmp6 [V08,T04] ( 2, 2 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 @@ -34,73 +29,48 @@ G_M45934_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50 G_M45934_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M45934_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M45934_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M45934_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M45934_IG04: ; bbWeight=0.20, 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
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M45934_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M45934_IG12 - ;; size=12 bbWeight=1 PerfScore 2.50 -G_M45934_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M45934_IG05 + ;; size=32 bbWeight=1 PerfScore 5.50 +G_M45934_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M45934_IG09 - ;; size=16 bbWeight=0.50 PerfScore 3.75 -G_M45934_IG07: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M45934_IG09 - ;; size=8 bbWeight=0.40 PerfScore 1.60 -G_M45934_IG08: ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M45934_IG10 - ;; size=4 bbWeight=0.32 PerfScore 0.32 -G_M45934_IG09: ; bbWeight=0.18, 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
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=20 bbWeight=0.18 PerfScore 0.54 -G_M45934_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=0.50 PerfScore 2.50 -G_M45934_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=40 bbWeight=0.50 PerfScore 4.00 +G_M45934_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M45934_IG12: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M45934_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1 x20] +[x0] ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 164, prolog size 24, PerfScore 27.11, instruction count 41, allocated bytes for code 164 (MethodHash=b3b24c91) for method Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
+; Total bytes of code 120, prolog size 24, PerfScore 17.00, instruction count 30, allocated bytes for code 120 (MethodHash=b3b24c91) for method Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
; ============================================================ Unwind Info: @@ -111,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+22.58%) : 12977.dasm - Roslyn.Utilities.InterlockedOperations:InitializeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -8,52 +8,42 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) byref -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) byref -> x20 single-def
;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp3 [V08,T03] ( 3, 2.50) ref -> x20 single-def "field V02.array (fldOffset=0x0)" P-INDEP -; V09 tmp4 [V09,T06] ( 3, 2.50) ref -> x0 "field V03.array (fldOffset=0x0)" P-INDEP -;* V10 tmp5 [V10,T07] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V11 tmp6 [V11,T05] ( 2, 4 ) long -> x0 "argument with side effect" -; V12 rat0 [V12,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V13 rat1 [V13,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T02] ( 3, 2.50) ref -> x21 single-def "field V02.array (fldOffset=0x0)" P-INDEP +; V09 tmp4 [V09,T04] ( 3, 2.50) ref -> x20 "field V03.array (fldOffset=0x0)" P-INDEP +;* V10 tmp5 [V10,T05] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V11 tmp6 [V11,T03] ( 2, 4 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M16590_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp
- str x0, [fp, #0x18] - mov x19, x1 - ; byrRegs +[x19] - mov x20, x2 - ; gcrRegs +[x20] - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M16590_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M16590_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M16590_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x2 - b G_M16590_IG05 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M16590_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+ str x0, [fp, #0x10] + mov x19, x0 + mov x20, x1 + ; byrRegs +[x20] + mov x21, x2 + ; gcrRegs +[x21] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M16590_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M16590_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - mov x1, x19
+ bl CORINFO_HELP_MEMCPY + mov x1, x20
; byrRegs +[x1]
- mov x2, x20
+ mov x2, x21
; gcrRegs +[x2] mov x3, xzr movz x4, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableInterlocked:InterlockedCompareExchange[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] @@ -62,27 +52,41 @@ G_M16590_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19 ldr x4, [x4] blr x4 ; gcrRegs -[x2] +[x0]
- ; byrRegs -[x1 x19] - cbz x0, G_M16590_IG07 - ;; size=36 bbWeight=1 PerfScore 8.00 -G_M16590_IG06: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x20] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M16590_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x20]
+ ; byrRegs -[x1 x20] + mov x20, x0 + ; gcrRegs +[x20] + mov x0, x19 + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + cbz x20, G_M16590_IG05 + ;; size=80 bbWeight=1 PerfScore 14.50 +G_M16590_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21]
mov x0, x20 ; gcrRegs +[x0] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16590_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x20]
+G_M16590_IG04: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M16590_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x20] +[x21] + mov x0, x21 + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M16590_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 124, prolog size 16, PerfScore 24.45, instruction count 31, allocated bytes for code 124 (MethodHash=fa43bf31) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
+; Total bytes of code 152, prolog size 20, PerfScore 26.00, instruction count 38, allocated bytes for code 152 (MethodHash=fa43bf31) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -93,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -104,10 +108,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end - E4 end

+24 (+23.08%) : 17398.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -8,69 +8,68 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp str x0, [fp, #0x10]
- mov x20, x1
+ mov x19, x0 + mov x21, x1 + ; gcrRegs +[x21] + mov w22, w2 + mov x20, x3
; gcrRegs +[x20]
- mov w21, w2 - mov x19, x3 - ; gcrRegs +[x19] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x11, [x1, #0x10] - cbz x11, G_M18340_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M18340_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 7.50 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x11, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x20
+ bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x21
; gcrRegs +[x0]
- mov x1, x19
+ mov x11, x23 + mov x1, x20
; gcrRegs +[x1]
- ldr x2, [x11]
+ ldr x2, [x23]
blr x2
- ; gcrRegs -[x1 x19-x20] - uxtb w1, w21 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28]
+ ; gcrRegs -[x1 x20-x21] + uxtb w1, w22 + ;; size=68 bbWeight=1 PerfScore 12.50 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,9 +88,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next
C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+24 (+23.08%) : 17396.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValueProvider`1System.__Canon

@@ -8,69 +8,68 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 G_M6212_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp str x0, [fp, #0x10]
- mov x20, x1
+ mov x19, x0 + mov x21, x1 + ; gcrRegs +[x21] + mov w22, w2 + mov x20, x3
; gcrRegs +[x20]
- mov w21, w2 - mov x19, x3 - ; gcrRegs +[x19] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M6212_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x11, [x1, #0x10] - cbz x11, G_M6212_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M6212_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M6212_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M6212_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 7.50 +G_M6212_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x11, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M6212_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x20
+ bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x21
; gcrRegs +[x0]
- mov x1, x19
+ mov x11, x23 + mov x1, x20
; gcrRegs +[x1]
- ldr x2, [x11]
+ ldr x2, [x23]
blr x2
- ; gcrRegs -[x1 x19-x20] - uxtb w1, w21 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M6212_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28]
+ ; gcrRegs -[x1 x20-x21] + uxtb w1, w22 + ;; size=68 bbWeight=1 PerfScore 12.50 +G_M6212_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=b35ce7bb) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=b35ce7bb) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,9 +88,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next
C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

libraries_tests.run.linux.arm64.Release.mch

-36 (-33.33%) : 15686.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41558_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M41558_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 7.50 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=1 PerfScore 13.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)
+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -63,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-33.33%) : 176.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41558_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M41558_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 7.50 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=1 PerfScore 13.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info: @@ -63,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-32.14%) : 16849.dasm - Moq.Mock:OfSystem.__Canon:System.__Canon (Tier0)

@@ -17,28 +17,13 @@ G_M23939_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M23939_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M23939_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M23939_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M23939_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M23939_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23939_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M23939_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov w1, #1 movz x2, #0xD1FFAB1E // code for <unknown method> @@ -47,13 +32,13 @@ G_M23939_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- ;; size=28 bbWeight=1 PerfScore 8.00 -G_M23939_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 13.50 +G_M23939_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 12, PerfScore 31.60, instruction count 28, allocated bytes for code 112 (MethodHash=d364a27c) for method Moq.Mock:Of[System.__Canon]():System.__Canon (Tier0)
+; Total bytes of code 76, prolog size 12, PerfScore 19.00, instruction count 19, allocated bytes for code 76 (MethodHash=d364a27c) for method Moq.Mock:Of[System.__Canon]():System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -64,7 +49,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.64%) : 4214.dasm - System.PlatformDetection+<>c:<.cctor>b_5095():ubyte:this (Tier0)

@@ -78,27 +78,30 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=32 bbWeight=1 PerfScore 9.00 G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ ldr x1, [fp, #0x18] // [V07 tmp5] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldrh w1, [x0] + strh w1, [fp, #0x40]
add x0, fp, #64 // [V01 loc0]
- ldr x2, [fp, #0x18] // [V07 tmp5] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - add x0, fp, #64 // [V01 loc0]
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ;; size=48 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 14.50
G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
; ============================================================ Unwind Info: @@ -109,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.64%) : 4883.dasm - System.PlatformDetection+<>c:<.cctor>b_5094():ubyte:this (Tier0)

@@ -78,27 +78,30 @@ G_M61529_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=32 bbWeight=1 PerfScore 9.00 G_M61529_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ ldr x1, [fp, #0x18] // [V07 tmp5] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldrh w1, [x0] + strh w1, [fp, #0x40]
add x0, fp, #64 // [V01 loc0]
- ldr x2, [fp, #0x18] // [V07 tmp5] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - add x0, fp, #64 // [V01 loc0]
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ;; size=48 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 14.50
G_M61529_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
; ============================================================ Unwind Info: @@ -109,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+36 (+69.23%) : 17461.dasm - Moq.It+<>c1`1[System.Threading.CancellationToken]:b1_2(System.Threading.CancellationToken):ubyte:this (Tier0)

@@ -11,44 +11,62 @@ ; ; Lcl frame size = 16
-G_M13892_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M13892_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! mov fp, sp str x0, [fp, #0x18] // [V00 this] str x1, [fp, #0x10] // [V01 arg1] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M13892_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13892_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x1, fp, #16 // [V01 arg1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION + ; gcrRegs +[x0] + cbz x0, G_M13892_IG04 + add x1, fp, #16 // [V01 arg1] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0] cmp x0, #0 cset x0, ne ; gcrRegs -[x0]
- ;; size=28 bbWeight=1 PerfScore 4.00
+ ;; size=52 bbWeight=1 PerfScore 8.00
G_M13892_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
+G_M13892_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M13892_IG05: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 9.50, instruction count 13, allocated bytes for code 52 (MethodHash=a75ac9bb) for method Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
+; Total bytes of code 88, prolog size 8, PerfScore 16.00, instruction count 22, allocated bytes for code 88 (MethodHash=a75ac9bb) for method Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01)
+ ---- Scope 1 + Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) + Epilog Start Index : 1 (0x01)
---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-24 (-31.58%) : 2119.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M41558_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M41558_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-26.19%) : 2234.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilderSystem.ValueTuple3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray1+Builder[System.ValueTuple`3[int,int,System.__Canon]

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP
-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect" -; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup" -; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 24 @@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, x0, [fp, #0x18] // [V01 loc0] mov x19, x0 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M7461_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7461_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; gcrRegs +[x0] str x0, [fp, #0x18] // [V01 loc0]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M7461_IG08 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x18] - cbz x1, G_M7461_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this movk x2, #0xD1FFAB1E LSL #16 @@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 6.00 -G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 19.00 +G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
; ============================================================ Unwind Info: @@ -99,7 +69,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 3042.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFuncSystem.__Canon:System.Func`1System.__Canon

@@ -8,18 +8,13 @@ ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T05] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def +; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualStudio.Composition.DelegateServices+<>c__DisplayClass4_0`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.__Canon]> ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 rat0 [V07,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat3 [V10,T04] ( 3, 5.60) long -> x0 "spilling expr" -; V11 rat4 [V11,T06] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -33,13 +28,13 @@ G_M49634_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=28 bbWeight=1 PerfScore 5.50
-G_M49634_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M49634_IG08 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M49634_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - bl CORINFO_HELP_NEWSFAST
+G_M49634_IG02: ; bbWeight=1, 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_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x21, x0 ; gcrRegs +[x21] @@ -50,17 +45,12 @@ G_M49634_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15 x20] ; byrRegs -[x14]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M49634_IG07 - ;; size=36 bbWeight=1 PerfScore 11.00 -G_M49634_IG04: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M49634_IG07 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M49634_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -73,33 +63,15 @@ G_M49634_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 str x1, [x0, #0x18]
- ;; size=32 bbWeight=1 PerfScore 5.50 -G_M49634_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 15.00 +G_M49634_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M49634_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x21] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M49634_IG05 - ;; size=24 bbWeight=0.36 PerfScore 1.44 -G_M49634_IG08: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] +[x20] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M49634_IG03 - ;; size=24 bbWeight=0.20 PerfScore 0.80
-; Total bytes of code 180, prolog size 20, PerfScore 39.44, instruction count 45, allocated bytes for code 180 (MethodHash=3e6f3e1d) for method Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 25.50, instruction count 34, allocated bytes for code 136 (MethodHash=3e6f3e1d) for method Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+16.67%) : 6628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValidSystem.__Canon:ubyte (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def -; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def
+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def +; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -21,39 +21,39 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"
+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP -; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP +; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"
-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect" -; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
-G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x70]
+ stp x19, x20, [sp, #0x68] + str x21, [sp, #0x78]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20] stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x68] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=40 bbWeight=1 PerfScore 8.00 -G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ str x0, [fp, #0x60] + mov x19, x0 + mov x20, x1 + ; gcrRegs +[x20] + ;; size=48 bbWeight=1 PerfScore 9.50 +G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
tst w2, #255
- beq G_M36549_IG09
+ beq G_M36549_IG10
;; size=8 bbWeight=1 PerfScore 1.50
-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + mov x0, x20
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this movk x1, #0xD1FFAB1E LSL #16 @@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] ldr wzr, [x0] blr x1
- ; gcrRegs -[x19] - mov x19, x0 - ; gcrRegs +[x19] - mov w20, w1 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ldr w0, [x0, #0x10]
+ ; gcrRegs -[x20] + mov x20, x0 + ; gcrRegs +[x20] + mov w21, w1 + b G_M36549_IG05 + ;; size=40 bbWeight=0.50 PerfScore 5.50 +G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w20, w0 - bge G_M36549_IG05 - ;; size=56 bbWeight=0.50 PerfScore 9.00 -G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x08]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- add x8, fp, #24 // [V04 loc1] - mov w1, w20
+ add x8, fp, #16 // [V04 loc1] + mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x2 ; gcrRegs -[x0]
- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c]
sub w1, w0, #1 sub w0, w0, #22 cmp w1, #1 ccmp w0, #1, z, hi
- bls G_M36549_IG07 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldr w0, [x0, #0x10] - ; gcrRegs -[x0] - cmp w20, w0 - blt G_M36549_IG04 - ;; size=80 bbWeight=4 PerfScore 102.00 -G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M36549_IG11 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M36549_IG12 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bls G_M36549_IG08 + ;; size=100 bbWeight=2 PerfScore 47.00 +G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ bl CORINFO_HELP_MEMCPY + add w21, w21, #1 + ldr x0, [x20, #0x08] + ; gcrRegs +[x0] + ldr w0, [x0, #0x10] + ; gcrRegs -[x0] + cmp w21, w0 + blt G_M36549_IG04 + ;; size=40 bbWeight=4 PerfScore 44.00 +G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x20] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x20
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x19] - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70]
+ ; gcrRegs -[x1 x20] + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +178,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- ...

+24 (+23.08%) : 8039.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -8,69 +8,68 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp str x0, [fp, #0x10]
- mov x20, x1
+ mov x19, x0 + mov x21, x1 + ; gcrRegs +[x21] + mov w22, w2 + mov x20, x3
; gcrRegs +[x20]
- mov w21, w2 - mov x19, x3 - ; gcrRegs +[x19] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x11, [x1, #0x10] - cbz x11, G_M18340_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M18340_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 7.50 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x11, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x20
+ bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x21
; gcrRegs +[x0]
- mov x1, x19
+ mov x11, x23 + mov x1, x20
; gcrRegs +[x1]
- ldr x2, [x11]
+ ldr x2, [x23]
blr x2
- ; gcrRegs -[x1 x19-x20] - uxtb w1, w21 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28]
+ ; gcrRegs -[x1 x20-x21] + uxtb w1, w22 + ;; size=68 bbWeight=1 PerfScore 12.50 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,9 +88,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next
C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+24 (+31.58%) : 6185.dasm - System.Collections.Immutable.ImmutableArray1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -8,57 +8,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def -; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
; ; Lcl frame size = 8 G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp str x1, [fp, #0x10]
- mov x19, x0 - ; byrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M44373_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M44373_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x19, x1 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x1, [x19]
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x1, [x20]
; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ mov x0, x21 + bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1] +[x0]
- ; byrRegs -[x19] - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ; byrRegs -[x20] + ;; size=56 bbWeight=1 PerfScore 11.00 +G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -77,10 +74,9 @@ 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
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

realworld.run.linux.arm64.checked.mch

-24 (-31.58%) : 11419.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M15963_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M15963_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 2899.dasm - Microsoft.FSharp.Control.AsyncPrimitives:MakeAsyncSystem.__Canon:Microsoft.FSharp.Control.FSharpAsync`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M3011_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M3011_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M3011_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 3727.dasm - Microsoft.FSharp.Collections.IEnumerator:mkSeqSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M38576_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M38576_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M38576_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.62%) : 7134.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkbinopty3System.Canon,System.Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -9,47 +9,38 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def -; V02 arg1 [V02,T08] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> -; V04 arg3 [V04,T10] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> +; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V07 tmp2 [V07,T24] ( 2, 4 ) long -> x0 "spilling helperCall" -; V08 tmp3 [V08,T25] ( 2, 4 ) long -> x24 "spilling helperCall" -; V09 tmp4 [V09,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V10 tmp5 [V10,T02] ( 3, 6 ) long -> x23 "spilling helperCall" -;* V11 tmp6 [V11,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V12 tmp7 [V12,T18] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V13 tmp8 [V13,T26] ( 2, 4 ) long -> x23 "spilling helperCall" -; V14 tmp9 [V14,T03] ( 3, 6 ) long -> x24 "spilling helperCall"
+; V06 tmp1 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall" +; V07 tmp2 [V07,T13] ( 2, 4 ) long -> x24 "spilling helperCall" +; V08 tmp3 [V08,T14] ( 2, 4 ) long -> x25 "spilling helperCall" +; V09 tmp4 [V09,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V10 tmp5 [V10,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V11 tmp6 [V11,T16] ( 2, 4 ) long -> x24 "spilling helperCall" +; V12 tmp7 [V12,T06] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V13 tmp8 [V13,T17] ( 2, 4 ) long -> x23 "spilling helperCall" +; V14 tmp9 [V14,T18] ( 2, 4 ) long -> x25 "spilling helperCall"
; V15 tmp10 [V15,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T19] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V18 tmp13 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V21 tmp16 [V21,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V22 cse0 [V22,T07] ( 4, 4 ) long -> x23 "CSE - aggressive" -; V23 cse1 [V23,T13] ( 3, 3 ) long -> x24 "CSE - moderate" -; V24 rat0 [V24,T14] ( 3, 4 ) long -> x23 "runtime lookup" -; V25 rat1 [V25,T04] ( 3, 5.60) long -> x23 "fgMakeTemp is creating a new local variable" -; V26 rat2 [V26,T15] ( 3, 4 ) long -> x24 "runtime lookup" -; V27 rat3 [V27,T05] ( 3, 5.60) long -> x0 "spilling expr" -; V28 rat4 [V28,T11] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable" -; V29 rat5 [V29,T16] ( 3, 4 ) long -> x0 "runtime lookup" -; V30 rat6 [V30,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V31 rat7 [V31,T12] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T07] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V18 tmp13 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp14 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V20 tmp15 [V20,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V21 tmp16 [V21,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x1 mov x20, x2 ; gcrRegs +[x20] @@ -57,26 +48,27 @@ G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] mov x22, x4 ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x23, [x0, #0x18] - cbz x23, G_M2804_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M2804_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M2804_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=1 PerfScore 8.50 +G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x23, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x25, x0
mov x0, x23
- mov x24, x23
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -97,29 +89,20 @@ G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs -[x1-x2 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38]
+ mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x10] - cmp x1, #32 - ble G_M2804_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M2804_IG06: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x24, [x0, #0x20] - cbz x24, G_M2804_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M2804_IG07: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M2804_IG08: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x24, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - mov x0, x23
+ mov x0, x25
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -140,33 +123,29 @@ G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs -[x1-x2 x21] +[x0] mov x21, x0 ; gcrRegs +[x21]
- mov x23, x24 - ldr x0, [x19, #0x38]
+ mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x10] - cmp x1, #40 - ble G_M2804_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M2804_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x28] - cbz x0, G_M2804_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M2804_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M2804_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19]
- mov x0, x23
+ mov x0, x24
; gcrRegs -[x0] movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -178,7 +157,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs +[x2] mov x1, x21 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x23
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -190,7 +169,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs +[x2] mov x1, x20 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x25
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -214,27 +193,28 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; byrRegs -[x14] mov x0, x19 ; gcrRegs +[x0]
- ;; size=124 bbWeight=1 PerfScore 26.00 -G_M2804_IG14: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ;; size=432 bbWeight=1 PerfScore 80.50 +G_M2804_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 452, prolog size 24, PerfScore 100.02, instruction count 113, allocated bytes for code 452 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 500, prolog size 28, PerfScore 96.00, instruction count 125, allocated bytes for code 500 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 ...

+48 (+10.81%) : 7131.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkbinoptySystem.__Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -9,68 +9,94 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall" -; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall" -; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall" -;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall" -; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"
+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall" +; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall" +; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall" +; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall" +; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall" +; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall"
; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate" -; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup" -; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup" -; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable" -; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup" -; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr" -; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50 -G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x21, [x0, #0x10] - cbz x21, G_M20173_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M20173_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=1 PerfScore 7.50 +G_M20173_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x21, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x21
- mov x22, x21
+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs +[x0] + mov x2, x0 + ; gcrRegs +[x2] + mov x1, x20 + ; gcrRegs +[x1] + mov x0, x22 + ; gcrRegs -[x0] + movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x1-x2] +[x0] + mov x21, x0 + ; gcrRegs +[x21] + mov x0, x19 + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x23
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1-x2] +[x0] mov x22, x0 ; gcrRegs +[x22]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M20173_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - ldr x23, [x0, #0x18] - cbz x23, G_M20173_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x23, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - mov x0, x21 - movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - mov x2, x0 - ; gcrRegs +[x2] - mov x1, x20 - ; gcrRegs +[x1] - mov x0, x21 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - mov x24, x23 - ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #32 - ble G_M20173_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x20] - cbz x0, G_M20173_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x1, x21 - ; gcrRegs +[x1] - mov x0, x23 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2 x21] +[x0] - mov x2, x0 - ; gcrRegs +[x2]
mov x1, x22 ; gcrRegs +[x1] mov x0, x23 @@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2 x22] +[x0]
+ mov x2, x0 + ; gcrRegs +[x2] + mov x1, x21 + ; gcrRegs +[x1] + mov x0, x25
...

+20 (+13.51%) : 9655.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def -; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def -; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def +; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def +; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -19,83 +19,80 @@ ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect" -; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup" -; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp str x0, [fp, #0x18]
+ mov x20, x0 + mov x22, x1 + ; gcrRegs +[x22]
mov x19, x2 ; byrRegs +[x19]
- mov x20, x8 - ; byrRegs +[x20] - mov x2, x1 - ; gcrRegs +[x2] - ;; size=28 bbWeight=1 PerfScore 5.00 -G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz - ldr w1, [x19, #0x10] - cmp w1, #1 - beq G_M63339_IG08 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - ; gcrRegs -[x2] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M63339_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref - mov x0, x2 - b G_M63339_IG06 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov x21, x8 + ; byrRegs +[x21] + ;; size=36 bbWeight=1 PerfScore 6.50 +G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz + mov x0, x20
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + ldr w0, [x19, #0x10] + cmp w0, #1 + beq G_M63339_IG05 + ;; size=32 bbWeight=1 PerfScore 7.50 +G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref + ; gcrRegs -[x22] + mov x0, x20 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldr x1, [x19] ; gcrRegs +[x1]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=44 bbWeight=0.50 PerfScore 5.50 +G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref - ; gcrRegs -[x1] +[x2]
+ ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref + ; gcrRegs -[x1] +[x22]
; byrRegs -[x8 x19]
- mov x0, x2
+ mov x0, x22
; gcrRegs +[x0]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] mov x1, xzr
- ldr x2, [x2] - ; gcrRegs -[x2]
+ ldr x2, [x22]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +114,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 137 108 4 25 -5,916 +32
benchmarks.run_pgo.linux.arm64.checked.mch 403 331 42 30 -21,372 +344
benchmarks.run_tiered.linux.arm64.checked.mch 251 217 2 32 -17,412 +24
coreclr_tests.run.linux.arm64.checked.mch 1 1 0 0 -48 +0
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 337 223 28 86 -7,212 +1,524
libraries_tests.run.linux.arm64.Release.mch 301 266 4 31 -22,136 +176
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 197 137 15 45 -7,372 +388
realworld.run.linux.arm64.checked.mch 351 318 13 20 -17,572 +388
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
1,978 1,601 108 269 -99,040 +2,876

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 5,922 407 5,515 9 (0.08%) 4,678 (42.54%)
benchmarks.run_pgo.linux.arm64.checked.mch 17,428 13,936 3,492 2 (0.01%) 8,251 (31.64%)
benchmarks.run_tiered.linux.arm64.checked.mch 15,446 13,504 1,942 7 (0.03%) 5,194 (24.69%)
coreclr_tests.run.linux.arm64.checked.mch 515 3 512 3 (0.05%) 5,636 (86.09%)
libraries.crossgen2.linux.arm64.checked.mch 2,218 0 2,218 11 (0.28%) 1,317 (33.50%)
libraries.pmi.linux.arm64.checked.mch 15,533 0 15,533 0 (0.00%) 6,676 (29.53%)
libraries_tests.run.linux.arm64.Release.mch 10,610 9,210 1,400 1 (0.01%) 6,349 (36.58%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 5,643 0 5,643 1 (0.01%) 4,292 (41.54%)
realworld.run.linux.arm64.checked.mch 9,359 132 9,227 1 (0.01%) 4,870 (33.30%)
smoke_tests.nativeaot.linux.arm64.checked.mch 8,341 4 8,337 124 (0.88%) 5,376 (38.09%)
91,015 37,196 53,819 159 (0.11%) 52,639 (35.66%)

jit-analyze output

benchmarks.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: 1089056 (overridden on cmd)
Total bytes of diff: 1083172 (overridden on cmd)
Total bytes of delta: -5884 (-0.54 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 9291.dasm (6.25 % of base)
           4 : 11624.dasm (4.55 % of base)
           4 : 3241.dasm (2.70 % of base)
           4 : 3522.dasm (4.55 % of base)

Top file improvements (bytes):
        -328 : 8980.dasm (-23.98 % of base)
        -212 : 252.dasm (-30.99 % of base)
        -212 : 820.dasm (-33.12 % of base)
        -208 : 3808.dasm (-15.76 % of base)
        -184 : 743.dasm (-26.14 % of base)
        -184 : 256.dasm (-24.34 % of base)
        -156 : 5592.dasm (-29.32 % of base)
        -144 : 9612.dasm (-15.06 % of base)
        -136 : 9324.dasm (-30.63 % of base)
        -132 : 5362.dasm (-19.30 % of base)
        -128 : 5465.dasm (-27.12 % of base)
        -128 : 659.dasm (-18.71 % of base)
        -128 : 8551.dasm (-25.81 % of base)
        -100 : 218.dasm (-19.84 % of base)
        -100 : 10699.dasm (-15.82 % of base)
        -100 : 7332.dasm (-20.49 % of base)
        -100 : 8253.dasm (-24.04 % of base)
         -92 : 8249.dasm (-22.12 % of base)
         -80 : 3010.dasm (-15.87 % of base)
         -72 : 3164.dasm (-25.00 % of base)

48 total files with Code Size differences (44 improved, 4 regressed), 25 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 9291.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (2.70 % of base) : 3241.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           4 (4.55 % of base) : 3522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (4.55 % of base) : 11624.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 8980.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-15.76 % of base) : 3808.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -156 (-29.32 % of base) : 5592.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -144 (-15.06 % of base) : 9612.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
        -136 (-30.63 % of base) : 9324.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 5362.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -128 (-27.12 % of base) : 5465.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 8551.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 659.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-15.82 % of base) : 10699.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 7332.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 8253.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-19.84 % of base) : 218.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
         -92 (-22.12 % of base) : 8249.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -80 (-15.87 % of base) : 3010.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:ArrayOfUniqueValues[System.__Canon](int):System.__Canon[] (FullOpts)
         -72 (-24.00 % of base) : 255.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          20 (6.25 % of base) : 9291.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (4.55 % of base) : 3522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (4.55 % of base) : 11624.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
           4 (2.70 % of base) : 3241.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 9324.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 5592.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 5465.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -52 (-27.08 % of base) : 7244.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 743.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 8551.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 3164.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-25.00 % of base) : 8676.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-25.00 % of base) : 6257.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
         -44 (-24.44 % of base) : 6955.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 4822.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-24.04 % of base) : 8253.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -72 (-24.00 % of base) : 255.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 8980.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -72 (-23.38 % of base) : 8213.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-23.38 % of base) : 4843.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -24 (-23.08 % of base) : 5302.dasm - System.Threading.Tasks.TaskCache:CreateCacheableTask[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)


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: 2900708 (overridden on cmd)
Total bytes of diff: 2879680 (overridden on cmd)
Total bytes of delta: -21028 (-0.72 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 21928.dasm (10.53 % of base)
           8 : 11204.dasm (6.06 % of base)
           8 : 14116.dasm (6.06 % of base)
           8 : 8884.dasm (6.06 % of base)
           8 : 14739.dasm (6.06 % of base)
           8 : 9736.dasm (6.06 % of base)
           8 : 9936.dasm (6.06 % of base)
           8 : 11020.dasm (6.06 % of base)
           8 : 14531.dasm (6.06 % of base)
           8 : 18924.dasm (6.06 % of base)
           8 : 19304.dasm (6.06 % of base)
           8 : 19480.dasm (6.06 % of base)
           8 : 21956.dasm (6.06 % of base)
           8 : 22795.dasm (6.06 % of base)
           8 : 23355.dasm (6.06 % of base)
           8 : 23419.dasm (6.06 % of base)
           8 : 23500.dasm (6.06 % of base)
           8 : 24852.dasm (6.06 % of base)
           8 : 25183.dasm (6.06 % of base)
           8 : 8180.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 1151.dasm (-43.85 % of base)
        -428 : 858.dasm (-42.63 % of base)
        -372 : 2415.dasm (-37.96 % of base)
        -372 : 867.dasm (-35.36 % of base)
        -332 : 25615.dasm (-29.75 % of base)
        -316 : 15522.dasm (-37.44 % of base)
        -316 : 6086.dasm (-40.10 % of base)
        -296 : 12950.dasm (-39.78 % of base)
        -268 : 12447.dasm (-40.36 % of base)
        -260 : 9668.dasm (-41.94 % of base)
        -260 : 19649.dasm (-35.71 % of base)
        -260 : 2243.dasm (-28.14 % of base)
        -240 : 340.dasm (-32.97 % of base)
        -212 : 19708.dasm (-33.33 % of base)
        -212 : 22155.dasm (-33.12 % of base)
        -204 : 9672.dasm (-35.42 % of base)
        -204 : 10308.dasm (-23.50 % of base)
        -204 : 15471.dasm (-32.28 % of base)
        -204 : 723.dasm (-30.18 % of base)
        -204 : 13130.dasm (-30.00 % of base)

70 total files with Code Size differences (50 improved, 20 regressed), 20 unchanged.

Top method regressions (bytes):
          16 (10.53 % of base) : 21928.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 11204.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14116.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14739.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9736.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9936.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 11020.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14531.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 18924.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19480.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21956.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22795.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23355.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23419.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23500.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 24852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8180.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-42.63 % of base) : 858.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 1151.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 867.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.96 % of base) : 2415.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -332 (-29.75 % of base) : 25615.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
        -316 (-40.10 % of base) : 6086.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 15522.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 12950.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -268 (-40.36 % of base) : 12447.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -260 (-41.94 % of base) : 9668.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -260 (-35.71 % of base) : 19649.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-28.14 % of base) : 2243.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 340.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.33 % of base) : 19708.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 22155.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-32.28 % of base) : 15471.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 13130.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-23.50 % of base) : 10308.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -204 (-35.42 % of base) : 9672.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 723.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)

Top method regressions (percentages):
          16 (10.53 % of base) : 21928.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 11204.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14116.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14739.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9736.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9936.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 11020.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14531.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 18924.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19480.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21956.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22795.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23355.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23419.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23500.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 24852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8180.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 1151.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 858.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -260 (-41.94 % of base) : 9668.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
         -92 (-41.82 % of base) : 14876.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -148 (-41.57 % of base) : 6218.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-41.07 % of base) : 15340.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 24206.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -268 (-40.36 % of base) : 12447.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -316 (-40.10 % of base) : 6086.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 12950.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 10834.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
         -92 (-38.33 % of base) : 7341.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
        -372 (-37.96 % of base) : 2415.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-37.76 % of base) : 5088.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 15522.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -148 (-37.00 % of base) : 2499.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 6085.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 19106.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 24739.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Instrumented Tier0)
         -92 (-36.51 % of base) : 5090.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)


benchmarks.run_tiered.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: 2340380 (overridden on cmd)
Total bytes of diff: 2322992 (overridden on cmd)
Total bytes of delta: -17388 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 13538.dasm (10.53 % of base)
           8 : 1425.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 776.dasm (-42.63 % of base)
        -428 : 2281.dasm (-45.34 % of base)
        -372 : 785.dasm (-35.36 % of base)
        -372 : 11153.dasm (-32.98 % of base)
        -372 : 2164.dasm (-37.96 % of base)
        -332 : 19224.dasm (-29.75 % of base)
        -316 : 3337.dasm (-37.44 % of base)
        -316 : 9692.dasm (-40.10 % of base)
        -296 : 9469.dasm (-39.78 % of base)
        -260 : 12465.dasm (-40.37 % of base)
        -260 : 16171.dasm (-37.36 % of base)
        -260 : 2009.dasm (-27.66 % of base)
        -260 : 11279.dasm (-40.88 % of base)
        -240 : 328.dasm (-32.97 % of base)
        -212 : 5364.dasm (-33.12 % of base)
        -204 : 15933.dasm (-32.28 % of base)
        -204 : 9655.dasm (-30.00 % of base)
        -204 : 19008.dasm (-25.76 % of base)
        -204 : 668.dasm (-30.18 % of base)
        -204 : 11283.dasm (-34.46 % of base)

51 total files with Code Size differences (49 improved, 2 regressed), 24 unchanged.

Top method regressions (bytes):
          16 (10.53 % of base) : 13538.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 1425.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-42.63 % of base) : 776.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-45.34 % of base) : 2281.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-32.98 % of base) : 11153.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -372 (-35.36 % of base) : 785.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.96 % of base) : 2164.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -332 (-29.75 % of base) : 19224.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
        -316 (-40.10 % of base) : 9692.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 3337.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 9469.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-40.88 % of base) : 11279.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 12465.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-37.36 % of base) : 16171.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 2009.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 328.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 5364.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.76 % of base) : 19008.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-32.28 % of base) : 15933.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 9655.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-34.46 % of base) : 11283.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 668.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)

Top method regressions (percentages):
          16 (10.53 % of base) : 13538.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 1425.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-45.34 % of base) : 2281.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 776.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-41.82 % of base) : 15390.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -148 (-41.57 % of base) : 14892.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-41.07 % of base) : 15815.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 21128.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.88 % of base) : 11279.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 12465.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -316 (-40.10 % of base) : 9692.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 9469.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 13395.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
         -92 (-38.33 % of base) : 11120.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
        -372 (-37.96 % of base) : 2164.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-37.76 % of base) : 8793.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 3337.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -260 (-37.36 % of base) : 16171.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -148 (-37.00 % of base) : 2265.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 9691.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 12579.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 8795.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)


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: 164096 (overridden on cmd)
Total bytes of diff: 164048 (overridden on cmd)
Total bytes of delta: -48 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -48 : 321.dasm (-9.84 % of base)

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

Top method improvements (bytes):
         -48 (-9.84 % of base) : 321.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)

Top method improvements (percentages):
         -48 (-9.84 % of base) : 321.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)

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


libraries.pmi.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: 1285304 (overridden on cmd)
Total bytes of diff: 1279616 (overridden on cmd)
Total bytes of delta: -5688 (-0.44 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         804 : 5577.dasm (88.16 % of base)
          96 : 14793.dasm (23.53 % of base)
          84 : 14791.dasm (23.60 % of base)
          56 : 14789.dasm (17.95 % of base)
          44 : 14787.dasm (16.92 % of base)
          28 : 13129.dasm (18.42 % of base)
          28 : 12977.dasm (22.58 % of base)
          28 : 13130.dasm (18.42 % of base)
          28 : 13138.dasm (18.42 % of base)
          28 : 13139.dasm (18.42 % of base)
          24 : 17396.dasm (23.08 % of base)
          24 : 17398.dasm (23.08 % of base)
          20 : 17384.dasm (16.13 % of base)
          20 : 17386.dasm (16.13 % of base)
          20 : 9423.dasm (6.02 % of base)
          20 : 9425.dasm (4.50 % of base)
          16 : 13128.dasm (9.76 % of base)
          16 : 13135.dasm (9.76 % of base)
          16 : 13136.dasm (9.76 % of base)
          16 : 13140.dasm (9.76 % of base)

Top file improvements (bytes):
        -184 : 12781.dasm (-31.72 % of base)
        -156 : 18102.dasm (-30.47 % of base)
        -156 : 12750.dasm (-21.91 % of base)
        -136 : 12840.dasm (-19.65 % of base)
        -128 : 12842.dasm (-22.70 % of base)
        -124 : 14688.dasm (-21.23 % of base)
        -104 : 12985.dasm (-25.74 % of base)
         -96 : 12795.dasm (-19.35 % of base)
         -76 : 12772.dasm (-12.03 % of base)
         -76 : 12802.dasm (-22.62 % of base)
         -76 : 12992.dasm (-18.45 % of base)
         -76 : 12996.dasm (-18.45 % of base)
         -72 : 12788.dasm (-26.09 % of base)
         -72 : 14153.dasm (-18.56 % of base)
         -72 : 17125.dasm (-23.08 % of base)
         -72 : 17388.dasm (-26.09 % of base)
         -72 : 23826.dasm (-10.98 % of base)
         -72 : 13523.dasm (-30.51 % of base)
         -72 : 13525.dasm (-30.51 % of base)
         -72 : 13527.dasm (-30.51 % of base)

75 total files with Code Size differences (53 improved, 22 regressed), 20 unchanged.

Top method regressions (bytes):
         804 (88.16 % of base) : 5577.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          96 (23.53 % of base) : 14793.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          84 (23.60 % of base) : 14791.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          56 (17.95 % of base) : 14789.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          44 (16.92 % of base) : 14787.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          28 (22.58 % of base) : 12977.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          28 (18.42 % of base) : 13129.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13130.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13138.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13139.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          24 (23.08 % of base) : 17396.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
          24 (23.08 % of base) : 17398.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          20 (16.13 % of base) : 17386.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
          20 (16.13 % of base) : 17384.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
          20 (4.50 % of base) : 9425.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
          20 (6.02 % of base) : 9423.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
          16 (9.76 % of base) : 13128.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13131.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13127.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13140.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)

Top method improvements (bytes):
        -184 (-31.72 % of base) : 12781.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
        -156 (-30.47 % of base) : 18102.dasm - Microsoft.CodeAnalysis.GreenNode:CreateList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.GreenNode (FullOpts)
        -156 (-21.91 % of base) : 12750.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
        -136 (-19.65 % of base) : 12840.dasm - Roslyn.Utilities.EnumerableExtensions:ToMultiDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
        -128 (-22.70 % of base) : 12842.dasm - Roslyn.Utilities.EnumerableExtensions:AsSingleton[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
        -124 (-21.23 % of base) : 14688.dasm - Microsoft.CodeAnalysis.DictionaryExtensions:ToImmutableSegmentedDictionaryAndFree[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
        -104 (-25.74 % of base) : 12985.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -96 (-19.35 % of base) : 12795.dasm - Roslyn.Utilities.EnumerableExtensions:EnumeratingIndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -76 (-22.62 % of base) : 12802.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -76 (-12.03 % of base) : 12772.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
         -76 (-18.45 % of base) : 12992.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -76 (-18.45 % of base) : 12996.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -72 (-18.56 % of base) : 14153.dasm - Microsoft.Cci.IteratorHelper:EnumerableCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):uint (FullOpts)
         -72 (-20.00 % of base) : 14149.dasm - Microsoft.Cci.IteratorHelper:EnumerableIsNotEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -72 (-10.98 % of base) : 23826.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:AddRange[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -72 (-23.08 % of base) : 17125.dasm - Microsoft.CodeAnalysis.IncrementalGeneratorInitializationContext:RegisterSourceOutput[System.__Canon](Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon],System.Action`2[Microsoft.CodeAnalysis.SourceProductionContext,System.__Canon],int,System.String):this (FullOpts)
         -72 (-26.09 % of base) : 17388.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 17390.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`3[System.__Canon,System.Threading.CancellationToken,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 12788.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -72 (-30.51 % of base) : 13523.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
         804 (88.16 % of base) : 5577.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          84 (23.60 % of base) : 14791.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          96 (23.53 % of base) : 14793.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          24 (23.08 % of base) : 17396.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
          24 (23.08 % of base) : 17398.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          28 (22.58 % of base) : 12977.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          28 (18.42 % of base) : 13129.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13130.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13138.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          28 (18.42 % of base) : 13139.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          56 (17.95 % of base) : 14789.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          44 (16.92 % of base) : 14787.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          20 (16.13 % of base) : 17386.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
          20 (16.13 % of base) : 17384.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
          16 (9.76 % of base) : 13128.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13131.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13127.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13140.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13136.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          16 (9.76 % of base) : 13135.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[ubyte](System.Func`3[System.__Canon,ubyte,ubyte],ubyte):ubyte:this (FullOpts)

Top method improvements (percentages):
         -56 (-32.56 % of base) : 12832.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -56 (-32.56 % of base) : 12910.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
         -56 (-32.56 % of base) : 12912.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
        -184 (-31.72 % of base) : 12781.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
         -72 (-30.51 % of base) : 13523.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
         -72 (-30.51 % of base) : 13525.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlySet[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon]):System.Collections.Generic.ISet`1[System.__Canon] (FullOpts)
         -72 (-30.51 % of base) : 13527.dasm - Roslyn.Utilities.SpecializedCollections:StronglyTypedReadOnlySet[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon]):System.Collections.Generic.IReadOnlySet`1[System.__Canon] (FullOpts)
        -156 (-30.47 % of base) : 18102.dasm - Microsoft.CodeAnalysis.GreenNode:CreateList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.GreenNode (FullOpts)
         -52 (-28.89 % of base) : 12834.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -24 (-27.27 % of base) : 13521.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyEnumerable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -24 (-27.27 % of base) : 13507.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-26.83 % of base) : 12762.dasm - Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -44 (-26.19 % of base) : 12734.dasm - Roslyn.Utilities.EnumerableExtensions:ToCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IReadOnlyCollection`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 17388.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 17390.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`3[System.__Canon,System.Threading.CancellationToken,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 12788.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -24 (-26.09 % of base) : 12860.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -24 (-26.09 % of base) : 13514.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerator[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -104 (-25.74 % of base) : 12985.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -52 (-25.49 % of base) : 12817.dasm - Roslyn.Utilities.EnumerableExtensions:OrderByDescending[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Comparison`1[System.__Canon]):System.Linq.IOrderedEnumerable`1[System.__Canon] (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: 2135476 (overridden on cmd)
Total bytes of diff: 2113516 (overridden on cmd)
Total bytes of delta: -21960 (-1.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         132 : 13264.dasm (94.29 % of base)
          36 : 17461.dasm (69.23 % of base)
           4 : 4214.dasm (1.64 % of base)
           4 : 4883.dasm (1.64 % of base)

Top file improvements (bytes):
        -428 : 35.dasm (-41.96 % of base)
        -428 : 43.dasm (-43.85 % of base)
        -372 : 148.dasm (-37.35 % of base)
        -372 : 1241.dasm (-36.47 % of base)
        -316 : 6678.dasm (-40.10 % of base)
        -296 : 1963.dasm (-39.78 % of base)
        -260 : 1271.dasm (-28.14 % of base)
        -260 : 11793.dasm (-43.92 % of base)
        -260 : 155.dasm (-40.37 % of base)
        -260 : 2539.dasm (-43.92 % of base)
        -260 : 774.dasm (-40.37 % of base)
        -260 : 8477.dasm (-34.76 % of base)
        -260 : 8128.dasm (-37.36 % of base)
        -216 : 11958.dasm (-33.54 % of base)
        -212 : 12829.dasm (-33.12 % of base)
        -212 : 14325.dasm (-33.12 % of base)
        -212 : 17801.dasm (-33.12 % of base)
        -212 : 4738.dasm (-33.12 % of base)
        -212 : 13201.dasm (-33.12 % of base)
        -212 : 6186.dasm (-33.12 % of base)

53 total files with Code Size differences (49 improved, 4 regressed), 24 unchanged.

Top method regressions (bytes):
         132 (94.29 % of base) : 13264.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Equals(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier0)
          36 (69.23 % of base) : 17461.dasm - Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
           4 (1.64 % of base) : 4883.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           4 (1.64 % of base) : 4214.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)

Top method improvements (bytes):
        -428 (-41.96 % of base) : 35.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 43.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-36.47 % of base) : 1241.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 148.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-40.10 % of base) : 6678.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 1963.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 774.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 155.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-37.36 % of base) : 8128.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-34.76 % of base) : 8477.dasm - System.Linq.Enumerable:ElementAt[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon] (Tier0)
        -260 (-28.14 % of base) : 1271.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -260 (-43.92 % of base) : 2539.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -260 (-43.92 % of base) : 11793.dasm - Xunit.Assert:DoesNotContain[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -216 (-33.54 % of base) : 11958.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 12829.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 14325.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 17801.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 4738.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 13201.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 6186.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)

Top method regressions (percentages):
         132 (94.29 % of base) : 13264.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Equals(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte:this (Tier0)
          36 (69.23 % of base) : 17461.dasm - Moq.It+<>c__1`1[System.Threading.CancellationToken]:<IsAny>b__1_2(System.Threading.CancellationToken):ubyte:this (Tier0)
           4 (1.64 % of base) : 4883.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           4 (1.64 % of base) : 4214.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)

Top method improvements (percentages):
        -260 (-43.92 % of base) : 2539.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -260 (-43.92 % of base) : 11793.dasm - Xunit.Assert:DoesNotContain[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -428 (-43.85 % of base) : 43.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 35.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 774.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 155.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -316 (-40.10 % of base) : 6678.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 1963.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 19.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -148 (-39.36 % of base) : 11708.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Predicate`1[System.__Canon]):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 17541.dasm - Moq.Mock:Of[System.__Canon](System.Linq.Expressions.Expression`1[System.__Canon],int):System.__Canon (Tier0)
        -148 (-37.76 % of base) : 9265.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-37.70 % of base) : 2796.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
         -92 (-37.70 % of base) : 5299.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
         -92 (-37.70 % of base) : 8164.dasm - Xunit.Assert:NotEqual[System.__Canon](System.__Canon,System.__Canon) (Tier0)
         -92 (-37.70 % of base) : 7494.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
         -92 (-37.70 % of base) : 4732.dasm - Xunit.Sdk.CollectionExtensions:CastOrToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
         -92 (-37.70 % of base) : 1331.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -260 (-37.36 % of base) : 8128.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 148.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)


librariestestsnotieredcompilation.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: 1090520 (overridden on cmd)
Total bytes of diff: 1083536 (overridden on cmd)
Total bytes of delta: -6984 (-0.64 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6076.dasm (8.99 % of base)
          64 : 4331.dasm (5.39 % of base)
          48 : 6628.dasm (16.67 % of base)
          28 : 12633.dasm (9.21 % of base)
          28 : 10438.dasm (7.87 % of base)
          24 : 6185.dasm (31.58 % of base)
          24 : 2790.dasm (6.59 % of base)
          24 : 8039.dasm (23.08 % of base)
          24 : 10425.dasm (6.25 % of base)
          20 : 8521.dasm (16.13 % of base)
          20 : 69.dasm (6.25 % of base)
           4 : 8518.dasm (3.03 % of base)
           4 : 8433.dasm (3.45 % of base)
           4 : 8713.dasm (1.89 % of base)
           4 : 4200.dasm (3.45 % of base)

Top file improvements (bytes):
        -328 : 2953.dasm (-23.98 % of base)
        -328 : 1002.dasm (-22.47 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -212 : 13.dasm (-33.12 % of base)
        -212 : 3313.dasm (-12.62 % of base)
        -200 : 2960.dasm (-19.69 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -184 : 479.dasm (-24.34 % of base)
        -176 : 3206.dasm (-27.85 % of base)
        -160 : 759.dasm (-17.62 % of base)
        -156 : 4645.dasm (-21.91 % of base)
        -136 : 2194.dasm (-30.63 % of base)
        -136 : 6181.dasm (-18.68 % of base)
        -132 : 510.dasm (-19.76 % of base)
        -128 : 7873.dasm (-29.91 % of base)
        -128 : 860.dasm (-27.12 % of base)
        -128 : 492.dasm (-18.71 % of base)
        -100 : 632.dasm (-21.93 % of base)
        -100 : 2100.dasm (-24.04 % of base)
         -96 : 3338.dasm (-12.83 % of base)

62 total files with Code Size differences (47 improved, 15 regressed), 23 unchanged.

Top method regressions (bytes):
          68 (8.99 % of base) : 6076.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          64 (5.39 % of base) : 4331.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          48 (16.67 % of base) : 6628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          28 (7.87 % of base) : 10438.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          28 (9.21 % of base) : 12633.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          24 (6.25 % of base) : 10425.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          24 (23.08 % of base) : 8039.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          24 (31.58 % of base) : 6185.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (6.59 % of base) : 2790.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          20 (16.13 % of base) : 8521.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (1.89 % of base) : 8713.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.03 % of base) : 8518.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           4 (3.45 % of base) : 4200.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 8433.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
        -328 (-22.47 % of base) : 1002.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 2953.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-12.62 % of base) : 3313.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -200 (-19.69 % of base) : 2960.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 479.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -176 (-27.85 % of base) : 3206.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -156 (-21.91 % of base) : 4645.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
        -136 (-18.68 % of base) : 6181.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
        -136 (-30.63 % of base) : 2194.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.76 % of base) : 510.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-18.71 % of base) : 492.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -128 (-29.91 % of base) : 7873.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -100 (-24.04 % of base) : 2100.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-21.93 % of base) : 632.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -96 (-12.83 % of base) : 3338.dasm - Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:UpdateStates[System.ValueTuple`2[System.__Canon,ubyte]](System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,ubyte],System.__Canon],System.ValueTuple`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:this (FullOpts)

Top method regressions (percentages):
          24 (31.58 % of base) : 6185.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (23.08 % of base) : 8039.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          48 (16.67 % of base) : 6628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          20 (16.13 % of base) : 8521.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          28 (9.21 % of base) : 12633.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          68 (8.99 % of base) : 6076.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          28 (7.87 % of base) : 10438.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          24 (6.59 % of base) : 2790.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          24 (6.25 % of base) : 10425.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          64 (5.39 % of base) : 4331.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
           4 (3.45 % of base) : 4200.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 8433.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.03 % of base) : 8518.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           4 (1.89 % of base) : 8713.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -24 (-31.58 % of base) : 2119.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 2194.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 5726.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
        -128 (-29.91 % of base) : 7873.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
         -72 (-28.12 % of base) : 8447.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
        -176 (-27.85 % of base) : 3206.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -44 (-26.19 % of base) : 2234.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-25.71 % of base) : 3064.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
         -72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 3042.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 599.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 479.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
         -52 (-24.07 % of base) : 4380.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
        -100 (-24.04 % of base) : 2100.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -24 (-24.00 % of base) : 2268.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
         -72 (-24.00 % of base) : 12.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)


realworld.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: 1695560 (overridden on cmd)
Total bytes of diff: 1678376 (overridden on cmd)
Total bytes of delta: -17184 (-1.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 7457.dasm (12.55 % of base)
          48 : 7110.dasm (10.62 % of base)
          48 : 7121.dasm (10.62 % of base)
          48 : 7131.dasm (10.81 % of base)
          48 : 7134.dasm (10.62 % of base)
          20 : 9655.dasm (13.51 % of base)
          16 : 7058.dasm (8.51 % of base)
           8 : 10918.dasm (3.03 % of base)
           8 : 2662.dasm (4.26 % of base)
           8 : 11191.dasm (5.88 % of base)
           4 : 12455.dasm (5.56 % of base)
           4 : 2897.dasm (1.59 % of base)
           4 : 6062.dasm (0.98 % of base)

Top file improvements (bytes):
        -328 : 10308.dasm (-29.29 % of base)
        -328 : 3835.dasm (-24.33 % of base)
        -228 : 9591.dasm (-28.22 % of base)
        -212 : 252.dasm (-30.99 % of base)
        -212 : 820.dasm (-33.12 % of base)
        -208 : 7293.dasm (-23.01 % of base)
        -208 : 8272.dasm (-23.42 % of base)
        -200 : 6381.dasm (-11.79 % of base)
        -188 : 13212.dasm (-23.86 % of base)
        -184 : 256.dasm (-24.34 % of base)
        -184 : 744.dasm (-26.14 % of base)
        -172 : 10307.dasm (-18.53 % of base)
        -172 : 8979.dasm (-22.63 % of base)
        -164 : 6179.dasm (-22.04 % of base)
        -160 : 14567.dasm (-17.62 % of base)
        -152 : 10309.dasm (-14.02 % of base)
        -144 : 7253.dasm (-20.81 % of base)
        -144 : 8127.dasm (-24.32 % of base)
        -144 : 8946.dasm (-20.11 % of base)
        -144 : 9139.dasm (-18.00 % of base)

69 total files with Code Size differences (56 improved, 13 regressed), 20 unchanged.

Top method regressions (bytes):
         124 (12.55 % of base) : 7457.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (10.81 % of base) : 7131.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7134.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7121.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7110.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          20 (13.51 % of base) : 9655.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          16 (8.51 % of base) : 7058.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
           8 (3.03 % of base) : 10918.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           8 (4.26 % of base) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (5.88 % of base) : 11191.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (0.98 % of base) : 6062.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (1.59 % of base) : 2897.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (5.56 % of base) : 12455.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 10308.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -328 (-24.33 % of base) : 3835.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 9591.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 7293.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -208 (-23.42 % of base) : 8272.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
        -200 (-11.79 % of base) : 6381.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -188 (-23.86 % of base) : 13212.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-24.34 % of base) : 256.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -172 (-22.63 % of base) : 8979.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -172 (-18.53 % of base) : 10307.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -164 (-22.04 % of base) : 6179.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -160 (-17.62 % of base) : 14567.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -152 (-14.02 % of base) : 10309.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -144 (-18.00 % of base) : 9139.dasm - FSharp.Compiler.PatternMatchCompilation:chooseSimultaneousEdgeSet[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -144 (-24.32 % of base) : 8127.dasm - Internal.Utilities.Library.List:loop@386-20[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -144 (-20.81 % of base) : 7253.dasm - Microsoft.FSharp.Primitives.Basics.List:map2[System.__Canon,ubyte,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[ubyte]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -144 (-20.11 % of base) : 8946.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          20 (13.51 % of base) : 9655.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
         124 (12.55 % of base) : 7457.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (10.81 % of base) : 7131.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7134.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7121.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 7110.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          16 (8.51 % of base) : 7058.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
           8 (5.88 % of base) : 11191.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (5.56 % of base) : 12455.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
           8 (4.26 % of base) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (3.03 % of base) : 10918.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           4 (1.59 % of base) : 2897.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (0.98 % of base) : 6062.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (percentages):
         -60 (-33.33 % of base) : 9225.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
        -212 (-33.12 % of base) : 820.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 10922.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 11419.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 252.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -56 (-30.43 % of base) : 8211.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -100 (-29.41 % of base) : 6080.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
        -100 (-29.41 % of base) : 6222.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -80 (-29.41 % of base) : 6890.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
         -80 (-29.41 % of base) : 10513.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -328 (-29.29 % of base) : 10308.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -100 (-28.41 % of base) : 9687.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 9591.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -80 (-28.17 % of base) : 6072.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 6478.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 10649.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 10131.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:toSeq[System.__Canon](Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 5173.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 10915.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 6220.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)



osx arm64

Diffs are based on 79,033 contexts (35,101 MinOpts, 43,932 FullOpts).

MISSED contexts: base: 44 (0.04%), diff: 37,673 (31.32%)

Overall (-81,444 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,030,644 -6,084
benchmarks.run_pgo.osx.arm64.checked.mch 2,510,584 -18,724
benchmarks.run_tiered.osx.arm64.checked.mch 2,279,232 -17,048
coreclr_tests.run.osx.arm64.checked.mch 312,480 -176
libraries.pmi.osx.arm64.checked.mch 1,249,200 -4,376
libraries_tests.run.osx.arm64.Release.mch 1,052,488 -10,708
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 1,037,508 -6,992
realworld.run.osx.arm64.checked.mch 1,692,100 -17,336

MinOpts (-43,828 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,244,624 -17,056
benchmarks.run_tiered.osx.arm64.checked.mch 2,045,300 -16,120
coreclr_tests.run.osx.arm64.checked.mch 286,116 -176
libraries_tests.run.osx.arm64.Release.mch 981,904 -10,476

FullOpts (-37,616 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,030,220 -6,084
benchmarks.run_pgo.osx.arm64.checked.mch 265,960 -1,668
benchmarks.run_tiered.osx.arm64.checked.mch 233,932 -928
libraries.pmi.osx.arm64.checked.mch 1,249,200 -4,376
libraries_tests.run.osx.arm64.Release.mch 70,584 -232
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 1,037,508 -6,992
realworld.run.osx.arm64.checked.mch 1,692,000 -17,336

Example diffs

benchmarks.run.osx.arm64.checked.mch

-44 (-25.00%) : 5866.dasm - System.Text.Json.JsonSerializer:SerializeSystem.__Canon:System.String (FullOpts)

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect" +; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 @@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41289_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] @@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M41289_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M41289_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
add x1, fp, #16 // [V01 arg0] mov x2, x20 ; gcrRegs +[x2] @@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20] +[x0]
- ;; size=28 bbWeight=1 PerfScore 6.50 -G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=96 bbWeight=1 PerfScore 19.00 +G_M41289_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 1314.dasm - System.Linq.Enumerable:SetCountAndGetSpanSystem.__Canon:System.Span`1System.__Canon

@@ -7,22 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] mov w21, w2 ;; size=32 bbWeight=1 PerfScore 6.00
-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M26687_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] mov w2, w21 @@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M26687_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M26687_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 17.50 +G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 1412.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerSystem.__Canon:ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)

@@ -7,68 +7,39 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> -; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x21 "spilling helperCall"
+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> x22 "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V07 rat0 [V07,T01] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable" -; V08 rat1 [V08,T06] ( 3, 4 ) long -> x22 "runtime lookup" -; V09 rat2 [V09,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V10 rat3 [V10,T04] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> x19 "argument with side effect" +; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M14728_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ;; size=28 bbWeight=1 PerfScore 5.50
-G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x21, [x0, #0x10] - cbz x21, G_M14728_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M14728_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x21, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M14728_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M14728_IG08 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x22, [x0, #0x18] - cbz x22, G_M14728_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M14728_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M14728_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x22, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY + mov x19, x0
mov x0, x20 ; gcrRegs +[x0] mov x1, x21 @@ -81,19 +52,19 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x20] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x22
+ mov x0, x19
; gcrRegs -[x0]
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ bl CORINFO_HELP_INITINSTCLASS
; gcrRegs -[x1] +[x0]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ;; size=92 bbWeight=1 PerfScore 16.00 +G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 39.60, instruction count 45, allocated bytes for code 180 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 26.50, instruction count 34, allocated bytes for code 136 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -112,10 +83,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+4 (+2.70%) : 7659.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)

@@ -10,7 +10,7 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Newtonsoft.Json.Linq.JContainer> ; V01 arg1 [V01,T00] ( 6, 4.50) ref -> x19 class-hnd single-def <System.Object> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 2 ) ref -> x1 class-hnd "spilling QMark2" <<unknown class>>
+; V03 tmp1 [V03,T01] ( 3, 2.50) ref -> x1 class-hnd "spilling QMark2" <<unknown class>>
; ; Lcl frame size = 8 @@ -27,56 +27,61 @@ G_M29722_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ bl CORINFO_HELP_INITINSTCLASS
; gcrRegs -[x1] +[x0]
- cbz x0, G_M29722_IG05
+ cbz x0, G_M29722_IG07
;; size=24 bbWeight=1 PerfScore 4.00 G_M29722_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] mov x1, x19 ; gcrRegs +[x1]
+ cbz x1, G_M29722_IG05 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M29722_IG04: ; bbWeight=0.25, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x1] ; gcrRegs -[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M29722_IG05
+ beq G_M29722_IG07 + ;; size=24 bbWeight=0.25 PerfScore 1.50 +G_M29722_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_ISINSTANCEOFARRAY
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M29722_IG05
+ cbnz x0, G_M29722_IG07
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0] cmp x0, #0 cset x0, eq ; gcrRegs -[x0]
- ;; size=80 bbWeight=0.50 PerfScore 7.25 -G_M29722_IG04: ; bbWeight=0.50, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M29722_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25
+ ;; size=52 bbWeight=0.50 PerfScore 4.00
G_M29722_IG06: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M29722_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M29722_IG08: ; bbWeight=0.50, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 148, prolog size 12, PerfScore 18.50, instruction count 37, allocated bytes for code 148 (MethodHash=14138be5) for method Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 12, PerfScore 17.50, instruction count 38, allocated bytes for code 152 (MethodHash=14138be5) for method Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -87,7 +92,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 38 (0x00026) Actual length = 152 (0x000098)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+4.55%) : 7893.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)

@@ -32,7 +32,7 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_CHKCASTINTERFACE
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x19 @@ -40,8 +40,9 @@ G_M31221_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #1 LSL #32
+ ldr wzr, [x0]
ldr x2, [x11]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 5.50
G_M31221_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -58,7 +59,7 @@ G_M31221_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=b00c860a) for method System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.25%) : 2189.dasm - System.Linq.Enumerable:gEnumerableToArray|296_0[System.ValueTuple`2[System.Canon,System.Canon]](System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]

@@ -8,33 +8,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP -; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP +; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect" -; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect" -; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup" -; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect" +; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect" +; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 408 @@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=76 bbWeight=1 PerfScore 15.00
-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M13440_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY
add x1, fp, #0xD1FFAB1E // [V02 loc0]
+ mov x0, x21
mov w2, #8 movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]] movk x3, #0xD1FFAB1E LSL #16 @@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0] str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8] str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]
- ldr x0, [x19, #0x38] - ; byrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M13440_IG08 - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x0, #0x18] - cbz x21, G_M13440_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x21, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x1, x21
+ bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] mov x2, x20 ; gcrRegs +[x2] @@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20]
- mov x1, x21
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this movk x2, #0xD1FFAB1E LSL #16 @@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- mov x19, x0 - ; gcrRegs +[x19] - mov x1, x21 - add x0, fp, #24 // [V03 loc1]
+ mov x20, x0 + ; gcrRegs +[x20] + mov x0, x19
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=96 bbWeight=1 PerfScore 21.00 -G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=248 bbWeight=1 PerfScore 47.50 +G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xD1FFAB1E] ldp x19, x20, [sp, #0xD1FFAB1E] ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
; ============================================================ Unwind Info: @@ -159,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.osx.arm64.checked.mch

-36 (-31.03%) : 16276.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 16556.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 629.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.06%) : 17884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 2.80) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T02] ( 5, 3.96) long -> x1 single-def -; V02 arg1 [V02,T03] ( 4, 3.80) byref -> x19 single-def -; V03 loc0 [V03,T01] ( 7, 6.20) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T04] ( 3, 2.80) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4.60) long -> x19 single-def +; V02 arg1 [V02,T03] ( 4, 3.80) byref -> x20 single-def +; V03 loc0 [V03,T02] ( 7, 6.20) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 4, 6.40) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T01] ( 4, 6.40) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 3.20) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.80 PerfScore 5.60 -G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M58319_IG05: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.16 PerfScore 0.48 -G_M58319_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.80 PerfScore 5.60 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.80 PerfScore 10.40 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 26.82, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 24.40, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+8 (+6.06%) : 21052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.11) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.13) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.11) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.11) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.22) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.11) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.44) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 0.88) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 0.88) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.44) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 0.62) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.11, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.11 PerfScore 0.77 -G_M58319_IG04: ; bbWeight=0.09, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.09 PerfScore 0.09 -G_M58319_IG05: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.02 PerfScore 0.07 -G_M58319_IG06: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.11 PerfScore 0.77 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.11 PerfScore 1.43 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 16.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 15.43, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+16 (+10.53%) : 5316.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable1[System.DateTimeOffset]]():System.Nullable1System.DateTimeOffset

@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0] str x0, [fp, #0x10] // [V04 tmp2]
- ldr x2, [fp, #0x10] // [V04 tmp2] - ; gcrRegs +[x2] - ldr x0, [fp, #0x38] // [V00 RetBuf]
+ ldr x1, [fp, #0x10] // [V04 tmp2] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1]
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - ; byrRegs -[x0] - ;; size=120 bbWeight=1 PerfScore 25.50
+ ldr x1, [fp, #0x38] // [V00 RetBuf] + ; byrRegs +[x1] + ldp x2, x3, [x0] + stp x2, x3, [x1] + ldr x2, [x0, #0x10] + str x2, [x1, #0x10] + ;; size=136 bbWeight=1 PerfScore 34.50
G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
; ============================================================ Unwind Info: @@ -75,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.osx.arm64.checked.mch

-36 (-31.03%) : 12489.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 10815.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 629.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 14188.dasm - Interop+CoreFoundation+CFProxy:LoadCFStringSymbol(long,System.String):System.String (Tier0)

@@ -32,9 +32,11 @@ G_M33967_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #6
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 ldr x0, [fp, #0x40] // [V00 arg0]
+ ; byrRegs -[x0]
ldr x1, [fp, #0x38] // [V01 arg1] ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -48,7 +50,7 @@ G_M33967_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWFAST
+ bl CORINFO_HELP_DBLROUND
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x20] // [V05 tmp1]

+8 (+6.06%) : 4906.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -8,84 +8,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def
+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def
; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.40 PerfScore 0.40 -G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.10 PerfScore 0.30 -G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.50 PerfScore 6.50 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -104,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+16 (+10.53%) : 8975.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable1[System.DateTimeOffset]]():System.Nullable1System.DateTimeOffset

@@ -44,27 +44,31 @@ G_M13724_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0] str x0, [fp, #0x10] // [V04 tmp2]
- ldr x2, [fp, #0x10] // [V04 tmp2] - ; gcrRegs +[x2] - ldr x0, [fp, #0x38] // [V00 RetBuf]
+ ldr x1, [fp, #0x10] // [V04 tmp2] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1]
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - ; byrRegs -[x0] - ;; size=120 bbWeight=1 PerfScore 25.50
+ ldr x1, [fp, #0x38] // [V00 RetBuf] + ; byrRegs +[x1] + ldp x2, x3, [x0] + stp x2, x3, [x1] + ldr x2, [x0, #0x10] + str x2, [x1, #0x10] + ;; size=136 bbWeight=1 PerfScore 34.50
G_M13724_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
; ============================================================ Unwind Info: @@ -75,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.osx.arm64.checked.mch

-36 (-28.12%) : 100.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -22,28 +22,13 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n str x1, [fp, #0x28] // [V01 arg0] str x2, [fp, #0x20] // [V02 arg1] ;; size=24 bbWeight=1 PerfScore 5.50
-G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M305_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M305_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V05 tmp1] - b G_M305_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V05 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x3, fp, #24 // [V03 loc0] ldr x0, [fp, #0x10] // [V05 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -56,13 +41,13 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x4, [x4] blr x4 ; gcrRegs -[x1-x2] +[x0]
- ;; size=36 bbWeight=1 PerfScore 12.00 -G_M305_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=1 PerfScore 17.50 +G_M305_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 12, PerfScore 37.60, instruction count 32, allocated bytes for code 128 (MethodHash=fd28fece) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
+; Total bytes of code 92, prolog size 12, PerfScore 25.00, instruction count 23, allocated bytes for code 92 (MethodHash=fd28fece) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -73,7 +58,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-15.79%) : 1469.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder1[int],System.ReadOnlyMemory1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback1[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)

@@ -34,7 +34,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str w6, [fp, #0x2C] // [V06 arg5] str w7, [fp, #0x28] // [V07 arg6] ;; size=52 bbWeight=1 PerfScore 12.00
-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x48] // [V02 arg1] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -48,26 +48,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x1, [fp, #0x20] // [V09 tmp1+0x08] ldr x0, [fp, #0x50] // [V01 TypeCtx] ; byrRegs -[x0]
- ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M60442_IG04 - ;; size=48 bbWeight=1 PerfScore 18.50 -G_M60442_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x50] // [V01 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V10 tmp2] - b G_M60442_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x50] // [V01 TypeCtx]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V10 tmp2]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr w0, [fp, #0x2C] // [V06 arg5] str w0, [sp] // [V08 OutArgs] ldr w0, [fp, #0x28] // [V07 arg6] @@ -93,14 +78,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x8 ; gcrRegs -[x0 x2 x7] ; byrRegs -[x3 x6]
- ;; size=72 bbWeight=1 PerfScore 28.00 -G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=128 bbWeight=1 PerfScore 43.00 +G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x08] add sp, sp, #112 ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 228, prolog size 20, PerfScore 70.10, instruction count 57, allocated bytes for code 228 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
+; Total bytes of code 192, prolog size 20, PerfScore 57.50, instruction count 48, allocated bytes for code 192 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -111,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-15.79%) : 544.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder1[int],System.ReadOnlyMemory1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback1[System.ValueTuple6[System.__Canon,System.__Canon,System.Text.StructListBuilder1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)

@@ -34,7 +34,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str w6, [fp, #0x2C] // [V06 arg5] str w7, [fp, #0x28] // [V07 arg6] ;; size=52 bbWeight=1 PerfScore 12.00
-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x48] // [V02 arg1] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -48,26 +48,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x1, [fp, #0x20] // [V09 tmp1+0x08] ldr x0, [fp, #0x50] // [V01 TypeCtx] ; byrRegs -[x0]
- ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M60442_IG04 - ;; size=48 bbWeight=1 PerfScore 18.50 -G_M60442_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x50] // [V01 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V10 tmp2] - b G_M60442_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x50] // [V01 TypeCtx]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V10 tmp2]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr w0, [fp, #0x2C] // [V06 arg5] str w0, [sp] // [V08 OutArgs] ldr w0, [fp, #0x28] // [V07 arg6] @@ -93,14 +78,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x8 ; gcrRegs -[x0 x2 x7] ; byrRegs -[x3 x6]
- ;; size=72 bbWeight=1 PerfScore 28.00 -G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=128 bbWeight=1 PerfScore 43.00 +G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x08] add sp, sp, #112 ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 228, prolog size 20, PerfScore 70.10, instruction count 57, allocated bytes for code 228 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
+; Total bytes of code 192, prolog size 20, PerfScore 57.50, instruction count 48, allocated bytes for code 192 (MethodHash=fcfa13e5) for method System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
; ============================================================ Unwind Info: @@ -111,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+7.89%) : 2060.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.IComparable> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) struct (16) [fp+0x48] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Decimal]>
+; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Decimal]>
; V04 tmp3 [V04 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Decimal]> ; ; Lcl frame size = 80 @@ -19,15 +19,20 @@ G_M63921_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x58] // [V00 arg0] ;; size=12 bbWeight=1 PerfScore 2.50 G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #48 // [V03 tmp2] - ldr x2, [fp, #0x58] // [V00 arg0] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2]
+ ldr x1, [fp, #0x58] // [V00 arg0] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldp x1, x2, [x0] + stp x1, x2, [fp, #0x30] + ldr x1, [x0, #0x10] + str x1, [fp, #0x40]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x0, [x0] @@ -54,13 +59,13 @@ G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #1 LSL #32 ldr x3, [x3] blr x3
- ;; size=132 bbWeight=1 PerfScore 38.50
+ ;; size=144 bbWeight=1 PerfScore 47.00
G_M63921_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 152, prolog size 8, PerfScore 43.00, instruction count 38, allocated bytes for code 152 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -71,7 +76,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 152 (0x000098)
+ 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)

+12 (+8.33%) : 2245.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <System.Object> ; V01 loc0 [V01 ] ( 1, 1 ) struct (16) [fp+0x58] do-not-enreg[SA] multireg-arg must-init ld-addr-op <System.Guid> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 1 ) struct (24) [fp+0x40] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Guid]>
+; V03 tmp1 [V03 ] ( 1, 1 ) struct (24) [fp+0x40] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Guid]>
; V04 tmp2 [V04 ] ( 1, 1 ) struct (16) [fp+0x30] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Guid> ; V05 tmp3 [V05 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]> ; @@ -22,17 +22,22 @@ G_M34635_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x68] // [V00 arg0] ;; size=20 bbWeight=1 PerfScore 4.50 G_M34635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #64 // [V03 tmp1] - ldr x2, [fp, #0x68] // [V00 arg0] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2]
+ ldr x1, [fp, #0x68] // [V00 arg0] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldp x1, x2, [x0] + stp x1, x2, [fp, #0x40] + ldr w1, [x0, #0x10] + str w1, [fp, #0x50]
movi v16.4s, #0 str q16, [fp, #0x58] // [V01 loc0] ldr x0, [fp, #0x58] // [V01 loc0]
+ ; byrRegs -[x0]
ldr x1, [fp, #0x60] // [V01 loc0+0x08] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -53,13 +58,13 @@ G_M34635_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #1 LSL #32 ldr x3, [x3] blr x3
- ;; size=116 bbWeight=1 PerfScore 35.00
+ ;; size=128 bbWeight=1 PerfScore 43.50
G_M34635_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 144, prolog size 16, PerfScore 41.50, instruction count 36, allocated bytes for code 144 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 156, prolog size 16, PerfScore 50.00, instruction count 39, allocated bytes for code 156 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -70,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ 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)

+28 (+9.86%) : 2515.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x268] do-not-enreg[] class-hnd <System.Object> ; V01 loc0 [V01 ] ( 1, 1 ) struct (96) [fp+0x208] do-not-enreg[S] must-init ld-addr-op <MixedAllStruct> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 1 ) struct (104) [fp+0x1A0] do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <System.Nullable`1[MixedAllStruct]>
+; V03 tmp1 [V03 ] ( 1, 1 ) struct (104) [fp+0x1A0] do-not-enreg[S] must-init "impAppendStmt" <System.Nullable`1[MixedAllStruct]>
; V04 tmp2 [V04 ] ( 1, 1 ) struct (96) [fp+0x140] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <MixedAllStruct> ; V05 tmp3 [V05 ] ( 1, 1 ) struct (96) [fp+0xE0] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <MixedAllStruct> ; V06 tmp4 [V06 ] ( 1, 1 ) struct (104) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Nullable`1[MixedAllStruct]> @@ -35,21 +35,34 @@ G_M13613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0xD1FFAB1E] // [V00 arg0] ;; size=64 bbWeight=1 PerfScore 12.50 G_M13613_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add x0, fp, #0xD1FFAB1E // [V03 tmp1] - ldr x2, [fp, #0xD1FFAB1E] // [V00 arg0] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2]
+ ldr x1, [fp, #0xD1FFAB1E] // [V00 arg0] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ;; size=20 bbWeight=1 PerfScore 4.50 +G_M13613_IG03: ; bbWeight=1, nogc, extend + ldp q16, q17, [x0] + stp q16, q17, [fp, #0xD1FFAB1E] + ldp q16, q17, [x0, #0x20] + stp q16, q17, [fp, #0xD1FFAB1E] + ldp q16, q17, [x0, #0x40] + stp q16, q17, [fp, #0xD1FFAB1E] + ldr x1, [x0, #0x60] + str x1, [fp, #0xD1FFAB1E] + ;; size=32 bbWeight=1 PerfScore 16.00 +G_M13613_IG04: ; bbWeight=1, extend
add x0, fp, #0xD1FFAB1E
+ ; byrRegs -[x0]
movi v16.16b, #0 stp q16, q16, [x0] stp q16, q16, [x0, #0x20] stp q16, q16, [x0, #0x40]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M13613_IG03: ; bbWeight=1, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 4.00 +G_M13613_IG05: ; bbWeight=1, nogc, extend
add x0, fp, #0xD1FFAB1E ldp q16, q17, [x0, #0xE0] stp q16, q17, [fp, #0xE0] @@ -58,7 +71,7 @@ G_M13613_IG03: ; bbWeight=1, nogc, extend ldp q16, q17, [x0, #0xD1FFAB1E] stp q16, q17, [fp, #0xD1FFAB1E] ;; size=28 bbWeight=1 PerfScore 12.50
-G_M13613_IG04: ; bbWeight=1, extend
+G_M13613_IG06: ; bbWeight=1, extend
add x0, fp, #224 // [V05 tmp3] add x8, fp, #0xD1FFAB1E // [V04 tmp2] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -67,7 +80,7 @@ G_M13613_IG04: ; bbWeight=1, extend ldr x1, [x1] blr x1 ;; size=28 bbWeight=1 PerfScore 6.50
-G_M13613_IG05: ; bbWeight=1, nogc, extend
+G_M13613_IG07: ; bbWeight=1, nogc, extend
add x0, fp, #0xD1FFAB1E ldr x1, [x0, #0x78] str x1, [fp, #0x78] @@ -78,7 +91,7 @@ G_M13613_IG05: ; bbWeight=1, nogc, extend ldp q16, q17, [x0, #0xC0] stp q16, q17, [fp, #0xC0] ;; size=36 bbWeight=1 PerfScore 16.50
-G_M13613_IG06: ; bbWeight=1, nogc, extend
+G_M13613_IG08: ; bbWeight=1, nogc, extend
add x0, fp, #0xD1FFAB1E ldr x1, [x0, #0x18] str x1, [fp, #0x18] @@ -91,7 +104,7 @@ G_M13613_IG06: ; bbWeight=1, nogc, extend ldr x1, [x0, #0x70] str x1, [fp, #0x70] ;; size=44 bbWeight=1 PerfScore 20.50
-G_M13613_IG07: ; bbWeight=1, extend
+G_M13613_IG09: ; bbWeight=1, extend
add x0, fp, #120 // [V06 tmp4] add x1, fp, #24 // [V07 tmp5] movz x2, #0xD1FFAB1E // code for <unknown method> @@ -100,13 +113,13 @@ G_M13613_IG07: ; bbWeight=1, extend ldr x2, [x2] blr x2 ;; size=28 bbWeight=1 PerfScore 6.50
-G_M13613_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M13613_IG10: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp] add sp, sp, #0xD1FFAB1E ret lr ;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 284, prolog size 60, PerfScore 86.50, instruction count 71, allocated bytes for code 284 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 312, prolog size 60, PerfScore 102.00, instruction count 78, allocated bytes for code 312 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
; ============================================================ Unwind Info: @@ -117,7 +130,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 71 (0x00047) Actual length = 284 (0x00011c)
+ Function Length : 78 (0x0004e) Actual length = 312 (0x000138)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.osx.arm64.checked.mch

-24 (-27.27%) : 10636.dasm - System.Tuple:CreateSystem.__Canon:System.Tuple`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M50024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M50024_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M50024_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M50024_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M50024_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M50024_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M50024_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M50024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M50024_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M50024_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M50024_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=8de53c97) for method System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=8de53c97) for method System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-26.19%) : 12243.dasm - System.Numerics.Vector:ToScalarSystem.__Canon:System.__Canon (FullOpts)

@@ -7,19 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01 ] ( 5, 5 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.Numerics.Vector`1[System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05 ] ( 4, 4 ) long -> [fp+0x10] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP ; V06 tmp4 [V06 ] ( 4, 4 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._01 (fldOffset=0x8)" P-DEP
-; V07 tmp5 [V07,T06] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 rat0 [V08,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V09 rat1 [V09,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V10 rat2 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V11 rat3 [V11,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V12 rat4 [V12,T03] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T01] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 24 @@ -31,47 +26,22 @@ G_M39513_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp x1, x2, [fp, #0x10] // [V01 arg0], [V01 arg0+0x08] mov x19, x0 ;; size=24 bbWeight=1 PerfScore 5.00
-G_M39513_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M39513_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M39513_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M39513_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M39513_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39513_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M39513_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowForUnsupportedNumericsVectorBaseType[System.__Canon]() movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M39513_IG08 - ;; size=36 bbWeight=1 PerfScore 13.00 -G_M39513_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M39513_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M39513_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M39513_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M39513_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M39513_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
add x1, fp, #16 // [V01 arg0] mov w2, wzr movz x3, #0xD1FFAB1E // code for System.Numerics.Vector:GetElementUnsafe[System.__Canon](byref,int):System.__Canon @@ -80,14 +50,14 @@ G_M39513_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=28 bbWeight=1 PerfScore 6.50 -G_M39513_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 18.00 +G_M39513_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.82, instruction count 42, allocated bytes for code 168 (MethodHash=480265a6) for method System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=480265a6) for method System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -98,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-25.00%) : 10758.dasm - System.TupleExtensions:ToTuple[System.Canon,System.Nullable1[int]](System.ValueTuple2[System.Canon,System.Nullable1[int]]):System.Tuple2[System.__Canon,System.Nullable`1[int]] (FullOpts)

@@ -7,13 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg single-def <System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp2 [V04,T04] ( 2, 4 ) long -> x0 "argument with side effect" -; V05 rat0 [V05,T03] ( 3, 4 ) long -> x0 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V04 tmp2 [V04,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 32 @@ -23,37 +21,26 @@ G_M8952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] stp x1, x2, [fp, #0x18] // [V01 arg0], [V01 arg0+0x08] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M8952_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x18] - cbz x2, G_M8952_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M8952_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M8952_IG05 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M8952_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8952_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M8952_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldp x1, x2, [fp, #0x18] // [V01 arg0], [V01 arg0+0x08] ; gcrRegs +[x1] movz x3, #0xD1FFAB1E // code for System.Tuple:Create[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3]
- ;; size=20 bbWeight=1 PerfScore 7.50 -G_M8952_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=36 bbWeight=1 PerfScore 10.00 +G_M8952_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 br x3 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 16, PerfScore 21.70, instruction count 20, allocated bytes for code 80 (MethodHash=0017dd07) for method System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
+; Total bytes of code 60, prolog size 16, PerfScore 15.50, instruction count 15, allocated bytes for code 60 (MethodHash=0017dd07) for method System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
; ============================================================ Unwind Info: @@ -64,7 +51,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+32 (+11.76%) : 6939.dasm - System.MemoryExtensions:AsSpanSystem.__Canon:System.Span`1System.__Canon

@@ -8,97 +8,96 @@ ; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 3.60) long -> x0 single-def
+; V00 TypeCtx [V00,T01] ( 5, 4 ) long -> x20 single-def
; V01 arg0 [V01,T00] ( 6, 4.50) ref -> x19 class-hnd single-def <System.__Canon[]> ;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Index> ;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc1 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Span`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T07] ( 3, 2 ) long -> x2 "spilling helperCall"
+; V06 tmp1 [V06,T07] ( 2, 2 ) long -> x0 "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]> ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Index> ;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Index>
-; V11 tmp6 [V11,T03] ( 7, 3.50) int -> x2 "Inline stloc first use temp" -; V12 tmp7 [V12,T09] ( 2, 2 ) int -> x1 "Inlining Arg"
+; V11 tmp6 [V11,T03] ( 7, 3.50) int -> x23 "Inline stloc first use temp" +; V12 tmp7 [V12,T08] ( 2, 2 ) int -> x0 "Inlining Arg"
; V13 tmp8 [V13,T04] ( 3, 3 ) int -> x20 "Inlining Arg"
-; V14 tmp9 [V14,T08] ( 2, 2 ) byref -> x19 single-def "Inlining Arg" -; V15 tmp10 [V15,T02] ( 4, 2.50) int -> x20 single-def "field V02._value (fldOffset=0x0)" P-INDEP -; V16 tmp11 [V16,T10] ( 2, 1 ) byref -> x0 single-def "field V04._reference (fldOffset=0x0)" P-INDEP -; V17 tmp12 [V17,T12] ( 2, 1 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP -; V18 tmp13 [V18,T11] ( 2, 1 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP -; V19 tmp14 [V19,T13] ( 2, 1 ) int -> x1 "field V07._length (fldOffset=0x8)" P-INDEP
+; V14 tmp9 [V14,T06] ( 2, 2 ) byref -> x19 single-def "Inlining Arg" +; V15 tmp10 [V15,T02] ( 4, 2.50) int -> x21 single-def "field V02._value (fldOffset=0x0)" P-INDEP +; V16 tmp11 [V16,T09] ( 2, 1 ) byref -> x0 single-def "field V04._reference (fldOffset=0x0)" P-INDEP +; V17 tmp12 [V17,T11] ( 2, 1 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP +; V18 tmp13 [V18,T10] ( 2, 1 ) byref -> x0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP +; V19 tmp14 [V19,T12] ( 2, 1 ) int -> x1 "field V07._length (fldOffset=0x8)" P-INDEP
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "field V09._value (fldOffset=0x0)" P-INDEP ;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._value (fldOffset=0x0)" P-INDEP
-; V22 cse0 [V22,T06] ( 4, 2 ) int -> x0 "CSE - aggressive" -; V23 rat0 [V23,T05] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V22 cse0 [V22,T05] ( 4, 2 ) int -> x22 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M2474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x20]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x10] + mov x20, x0
mov x19, x1 ; gcrRegs +[x19]
- mov w20, w2 - ;; size=24 bbWeight=1 PerfScore 4.50
+ mov w21, w2 + ;; size=36 bbWeight=1 PerfScore 7.00
G_M2474_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cbnz x19, G_M2474_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 G_M2474_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x19]
- cbnz w20, G_M2474_IG10
+ cbnz w21, G_M2474_IG07
mov x0, xzr ; byrRegs +[x0] mov w1, wzr ;; size=12 bbWeight=0.50 PerfScore 1.00 G_M2474_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
G_M2474_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x19] ; byrRegs -[x0]
- ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M2474_IG07 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M2474_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M2474_IG08 - ;; size=4 bbWeight=0.40 PerfScore 0.40 -G_M2474_IG07: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x0, x20
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x2, x0 - ;; size=20 bbWeight=0.10 PerfScore 0.30 -G_M2474_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19] - cmp x0, x2 - bne G_M2474_IG11 - ldr w0, [x19, #0x08] - sxtw w1, w0 - sxtw w2, w20 - add w1, w20, w1 - cmp w2, #0 - csinc w2, w2, w1, ge - cmp w0, w2 - blo G_M2474_IG12 - add x1, x19, #16 - ; byrRegs +[x1] - ubfiz x3, x2, #3, #32 - add x19, x1, x3
+ bl CORINFO_HELP_MEMCPY + ldr x1, [x19] + cmp x1, x0 + bne G_M2474_IG08 + ldr w22, [x19, #0x08] + sxtw w0, w22 + sxtw w23, w21 + add w0, w21, w0 + cmp w23, #0 + csinc w23, w23, w0, ge + cmp w22, w23 + blo G_M2474_IG09 + mov x0, x20 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + add x0, x19, #16 + ; byrRegs +[x0] + ubfiz x1, x23, #3, #32 + add x19, x0, x1
; gcrRegs -[x19] ; byrRegs +[x19]
- sub w20, w0, w2
+ sub w20, w22, w23
cmp w20, #0 cset x0, ge
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] @@ -106,13 +105,15 @@ G_M2474_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, mov x0, x19 ; byrRegs +[x0] sxtw w1, w20
- ;; size=96 bbWeight=0.50 PerfScore 10.75 -G_M2474_IG09: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x30
+ ;; size=136 bbWeight=0.50 PerfScore 13.75 +G_M2474_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M2474_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M2474_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0 x19] mov w0, #2 movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentNullException(int) @@ -122,7 +123,7 @@ G_M2474_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {} blr x1 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M2474_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2474_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArrayTypeMismatchException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -130,7 +131,7 @@ G_M2474_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M2474_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2474_IG09: ; 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 @@ -139,7 +140,7 @@ G_M2474_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 16, PerfScore 24.45, instruction count 68, allocated bytes for code 272 (MethodHash=d8fdf655) for method System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 304, prolog size 24, PerfScore 28.75, instruction count 76, allocated bytes for code 304 (MethodHash=d8fdf655) for method System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -150,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ 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) @@ -161,10 +162,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end - E4 end - E4 end
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+24 (+17.14%) : 7322.dasm - System.MemoryExtensions:CopyToSystem.__Canon (FullOpts)

@@ -8,92 +8,90 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x1 class-hnd single-def <System.__Canon[]>
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x20 class-hnd single-def <System.__Canon[]>
;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[System.__Canon]> ; V03 loc0 [V03 ] ( 3, 3 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[System.__Canon]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]> ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp4 [V08,T04] ( 2, 2 ) byref -> x19 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V09 tmp5 [V09,T05] ( 2, 2 ) int -> x20 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V08 tmp4 [V08,T02] ( 2, 2 ) byref -> x21 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V09 tmp5 [V09,T03] ( 2, 2 ) int -> x22 single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V10 tmp6 [V10 ] ( 2, 2 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._reference (fldOffset=0x0)" P-DEP ; V11 tmp7 [V11 ] ( 2, 2 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-; V12 tmp8 [V12,T07] ( 3, 2 ) byref -> x2 "field V05._reference (fldOffset=0x0)" P-INDEP -; V13 tmp9 [V13,T08] ( 3, 2 ) int -> x3 "field V05._length (fldOffset=0x8)" P-INDEP -; V14 tmp10 [V14,T06] ( 2, 4 ) long -> x1 "argument with side effect" -; V15 rat0 [V15,T03] ( 3, 4 ) long -> x1 "runtime lookup" -; V16 rat1 [V16,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V12 tmp8 [V12,T05] ( 3, 2 ) byref -> x0 "field V05._reference (fldOffset=0x0)" P-INDEP +; V13 tmp9 [V13,T06] ( 3, 2 ) int -> x1 "field V05._length (fldOffset=0x8)" P-INDEP +; V14 tmp10 [V14,T04] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 32 G_M15813_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
mov fp, sp str xzr, [fp, #0x18] // [V03 loc0] str x0, [fp, #0x28]
- mov x19, x2 - ; byrRegs +[x19] - mov w20, w3 - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M15813_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=80000 {x19}, byref, isz - ; gcrRegs +[x1] - cbnz x1, G_M15813_IG04 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M15813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; gcrRegs -[x1] - mov x2, xzr - ; byrRegs +[x2] - mov w3, wzr - b G_M15813_IG05 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M15813_IG04: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=80000 {x19}, byref - ; gcrRegs +[x1] - ; byrRegs -[x2] - add x2, x1, #16 - ; byrRegs +[x2] - ldr w3, [x1, #0x08] - ;; size=8 bbWeight=0.50 PerfScore 1.75 -G_M15813_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80004 {x2 x19}, byref, isz - ; gcrRegs -[x1] - str x2, [fp, #0x18] // [V10 tmp6] - str w3, [fp, #0x20] // [V11 tmp7] - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M15813_IG07 - ;; size=20 bbWeight=1 PerfScore 9.00 -G_M15813_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; byrRegs -[x2] - b G_M15813_IG08 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M15813_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ mov x19, x0 + mov x20, x1 + ; gcrRegs +[x20] + mov x21, x2 + ; byrRegs +[x21] + mov w22, w3 + ;; size=40 bbWeight=1 PerfScore 7.50 +G_M15813_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY + cbnz x20, G_M15813_IG04 + ;; size=24 bbWeight=1 PerfScore 4.00 +G_M15813_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref + ; gcrRegs -[x20] + mov x0, xzr + ; byrRegs +[x0] + mov w1, wzr + b G_M15813_IG05 + ;; size=12 bbWeight=0.50 PerfScore 1.00 +G_M15813_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref + ; gcrRegs +[x20] + ; byrRegs -[x0] + add x0, x20, #16 + ; byrRegs +[x0] + ldr w1, [x20, #0x08] + ;; size=8 bbWeight=0.50 PerfScore 1.75 +G_M15813_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200001 {x0 x21}, byref + ; gcrRegs -[x20] + str x0, [fp, #0x18] // [V10 tmp6] + str w1, [fp, #0x20] // [V11 tmp7] + mov x0, x19 + ; byrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M15813_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov x2, x19
+ mov x2, x21
; byrRegs +[x2]
- mov w3, w20
+ mov w3, w22
add x0, fp, #24 // [V03 loc0] movz x4, #0xD1FFAB1E // code for System.ReadOnlySpan`1[System.__Canon]:CopyTo(System.Span`1[System.__Canon]):this movk x4, #0xD1FFAB1E LSL #16 movk x4, #1 LSL #32 ldr x4, [x4] blr x4
- ; byrRegs -[x2 x19] - ;; size=32 bbWeight=1 PerfScore 7.00 -G_M15813_IG09: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[x2 x21] + ;; size=64 bbWeight=1 PerfScore 12.50 +G_M15813_IG06: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 140, prolog size 20, PerfScore 29.65, instruction count 35, allocated bytes for code 140 (MethodHash=8247c23a) for method System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 164, prolog size 24, PerfScore 30.75, instruction count 41, allocated bytes for code 164 (MethodHash=8247c23a) for method System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +102,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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) @@ -112,9 +110,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ E6 save_next
C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
E4 end E4 end E4 end

+40 (+17.24%) : 7304.dasm - System.MemoryExtensions:AsSpanSystem.__Canon:System.Span`1System.__Canon

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T04] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T03] ( 5, 5 ) struct (16) [fp+0x30] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]> -; V02 arg1 [V02,T06] ( 4, 4 ) struct ( 8) [fp+0x28] do-not-enreg[SF] ld-addr-op single-def <System.Range>
+; V00 TypeCtx [V00,T00] ( 7, 7 ) long -> x19 single-def +; V01 arg0 [V01,T04] ( 5, 5 ) struct (16) [fp+0x28] do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]> +; V02 arg1 [V02,T06] ( 4, 4 ) struct ( 8) [fp+0x20] do-not-enreg[SF] ld-addr-op single-def <System.Range>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,102 +18,101 @@ ;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[int,int]> ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp5 [V10,T10] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <System.__Canon[]> -; V11 tmp6 [V11 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
+; V10 tmp5 [V10,T07] ( 2, 4 ) ref -> x22 class-hnd single-def "impAppendStmt" <System.__Canon[]> +; V11 tmp6 [V11 ] ( 3, 6 ) struct (16) [fp+0x10] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V13 tmp8 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Index>
-; V14 tmp9 [V14,T00] ( 4, 8 ) int -> x1 "Inlining Arg"
+; V14 tmp9 [V14,T01] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-; V18 tmp13 [V18,T01] ( 7, 7 ) int -> x19 "Inline stloc first use temp" -; V19 tmp14 [V19,T02] ( 7, 7 ) int -> x3 "Inline stloc first use temp"
+; V18 tmp13 [V18,T02] ( 7, 7 ) int -> x20 "Inline stloc first use temp" +; V19 tmp14 [V19,T03] ( 7, 7 ) int -> x2 "Inline stloc first use temp"
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V07.Item1 (fldOffset=0x0)" P-INDEP ;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "field V07.Item2 (fldOffset=0x4)" P-INDEP
-; V23 tmp18 [V23 ] ( 3, 6 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP -; V24 tmp19 [V24 ] ( 3, 6 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP -; V25 tmp20 [V25,T05] ( 6, 6 ) int -> x2 "field V13._value (fldOffset=0x0)" P-INDEP
+; V23 tmp18 [V23 ] ( 3, 6 ) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP +; V24 tmp19 [V24 ] ( 3, 6 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP +; V25 tmp20 [V25,T05] ( 6, 6 ) int -> x1 "field V13._value (fldOffset=0x0)" P-INDEP
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V17.Item1 (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T12] ( 2, 2 ) int -> x20 "field V17.Item2 (fldOffset=0x4)" P-INDEP -; V28 tmp23 [V28,T11] ( 2, 4 ) long -> x1 "argument with side effect" -; V29 rat0 [V29,T09] ( 3, 4 ) long -> x1 "runtime lookup" -; V30 rat1 [V30,T07] ( 3, 5.60) long -> x1 "spilling expr" -; V31 rat2 [V31,T08] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V27 tmp22 [V27,T09] ( 2, 2 ) int -> x21 "field V17.Item2 (fldOffset=0x4)" P-INDEP +; V28 tmp23 [V28,T08] ( 2, 4 ) long -> x1 "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M28107_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x48] - str x21, [sp, #0x58]
+ stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
mov fp, sp
- str xzr, [fp, #0x18] // [V11 tmp6] - str x0, [fp, #0x40] - stp x1, x2, [fp, #0x30] // [V01 arg0], [V01 arg0+0x08] - str x3, [fp, #0x28] // [V02 arg1] - ;; size=32 bbWeight=1 PerfScore 7.50
+ str xzr, [fp, #0x10] // [V11 tmp6] + str x0, [fp, #0x38] + stp x1, x2, [fp, #0x28] // [V01 arg0], [V01 arg0+0x08] + str x3, [fp, #0x20] // [V02 arg1] + mov x19, x0 + ;; size=36 bbWeight=1 PerfScore 8.00
G_M28107_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr w1, [fp, #0x3C] // [V01 arg0+0x0c] - ldr w2, [fp, #0x28] // [V02 arg1] - sxtw w19, w2 - add w2, w2, w1 - cmp w19, #0 - csinc w19, w19, w2, ge - ldr w2, [fp, #0x2C] // [V02 arg1+0x04] - sxtw w3, w2 - add w2, w2, w1 - cmp w3, #0 - csinc w3, w3, w2, ge - cmp w3, w1 - ccmp w19, w3, c, ls - bhi G_M28107_IG08 - sub w20, w3, w19 - ldr x21, [fp, #0x30] // [V01 arg0] - ; gcrRegs +[x21] - stp xzr, xzr, [fp, #0x18] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x08] - cmp x2, #24 - ble G_M28107_IG05 - ;; size=84 bbWeight=1 PerfScore 23.00 -G_M28107_IG03: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ldr x1, [x1, #0x18] - cbz x1, G_M28107_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M28107_IG04: ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - b G_M28107_IG06 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M28107_IG05: ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY + ldr w0, [fp, #0x34] // [V01 arg0+0x0c] + ldr w1, [fp, #0x20] // [V02 arg1] + sxtw w20, w1 + add w1, w1, w0 + cmp w20, #0 + csinc w20, w20, w1, ge + ldr w1, [fp, #0x24] // [V02 arg1+0x04] + sxtw w2, w1 + add w1, w1, w0 + cmp w2, #0 + csinc w2, w2, w1, ge + cmp w2, w0 + ccmp w20, w2, c, ls + bhi G_M28107_IG04 + sub w21, w2, w20 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x22, [fp, #0x28] // [V01 arg0] + ; gcrRegs +[x22] + stp xzr, xzr, [fp, #0x10] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M28107_IG06: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ldr w3, [fp, #0x38] // [V01 arg0+0x08] - add w3, w3, w19 - add x0, fp, #24 // [V11 tmp6] - mov x2, x21
+ ldr w3, [fp, #0x30] // [V01 arg0+0x08] + add w3, w3, w20 + add x0, fp, #16 // [V11 tmp6] + mov x2, x22
; gcrRegs +[x2]
- mov w4, w20
+ mov w4, w21
movz x5, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:.ctor(System.__Canon[],int,int):this movk x5, #0xD1FFAB1E LSL #16 movk x5, #1 LSL #32 ldr x5, [x5] blr x5
- ; gcrRegs -[x2 x21] - ldp x0, x1, [fp, #0x18] // [V11 tmp6], [V11 tmp6+0x08]
+ ; gcrRegs -[x2 x22] + ldp x0, x1, [fp, #0x10] // [V11 tmp6], [V11 tmp6+0x08]
; byrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 12.50 -G_M28107_IG07: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x58] - ldp x19, x20, [sp, #0x48]
+ ;; size=196 bbWeight=1 PerfScore 40.50 +G_M28107_IG03: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M28107_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.00 +G_M28107_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0] movz x0, #0xD1FFAB1E // code for System.Range:ThrowArgumentOutOfRangeException() movk x0, #0xD1FFAB1E LSL #16 @@ -123,7 +122,7 @@ G_M28107_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 24, PerfScore 52.92, instruction count 58, allocated bytes for code 232 (MethodHash=dccb9234) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 272, prolog size 24, PerfScore 52.50, instruction count 68, allocated bytes for code 272 (MethodHash=dccb9234) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -134,7 +133,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 68 (0x00044) Actual length = 272 (0x000110)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -142,9 +141,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 8B save_reg X#2 Z#11 (0x0B); str x21, [sp, #88] - C8 09 save_regp X#0 Z#9 (0x09); stp x19, x20, [sp, #72]
+ E6 save_next + C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64]
8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]! E4 end E4 end
+ E4 end

libraries_tests.run.osx.arm64.Release.mch

-36 (-33.33%) : 139.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41558_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M41558_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 7.50 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=1 PerfScore 13.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info: @@ -63,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-33.33%) : 4783.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41558_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M41558_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 7.50 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=1 PerfScore 13.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)
+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -63,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 4930.dasm - System.Tuple:CreateSystem.Canon,System.Canon:System.Tuple`2System.Canon,System.Canon

@@ -8,15 +8,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> -; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> +; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 rat0 [V06,T06] ( 3, 4 ) long -> x1 "runtime lookup" -; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "spilling expr" -; V08 rat2 [V08,T05] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -30,29 +27,12 @@ G_M54721_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cmp x2, #32 - ble G_M54721_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M54721_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x1, #0x20] - cbz x1, G_M54721_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M54721_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M54721_IG06 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M54721_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -68,14 +48,14 @@ G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x20] ; byrRegs -[x14]
- ;; size=32 bbWeight=1 PerfScore 5.50 -G_M54721_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1 PerfScore 7.50 +G_M54721_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.42, instruction count 29, allocated bytes for code 116 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 15.00, instruction count 20, allocated bytes for code 80 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -86,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.83%) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

@@ -5,38 +5,43 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x6C] do-not-enreg[] -; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [fp+0x8C] do-not-enreg[] +; V01 loc0 [V01 ] ( 1, 1 ) struct ( 8) [fp+0x80] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V02 loc1 [V02 ] ( 1, 1 ) struct ( 8) [fp+0x78] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] must-init "Reusable Box Helper" -; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>> -; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V10 tmp7 [V10 ] ( 1, 1 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> -; V12 tmp9 [V12 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V05 tmp2 [V05 ] ( 1, 1 ) float -> [fp+0x6C] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 8) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V08 tmp5 [V08 ] ( 1, 1 ) long -> [fp+0x50] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 8) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V10 tmp7 [V10 ] ( 1, 1 ) double -> [fp+0x40] do-not-enreg[X] addr-exposed "location for address-of(RValue)" +; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V12 tmp9 [V12 ] ( 1, 1 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal> +; V13 tmp10 [V13 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect" +; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect" +; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect" +; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 128
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
+ stp fp, lr, [sp, #-0x90]!
mov fp, sp add x9, fp, #16 movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40] - str xzr, [x9, #0x50] - str w0, [fp, #0x6C] // [V00 arg0] - ;; size=36 bbWeight=1 PerfScore 7.50
+ stp q16, q16, [x9, #0x40] + stp xzr, xzr, [x9, #0x60] + str xzr, [x9, #0x70] + str w0, [fp, #0x8C] // [V00 arg0] + ;; size=40 bbWeight=1 PerfScore 8.50
G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x6C] // [V00 arg0]
+ ldr w0, [fp, #0x8C] // [V00 arg0]
cmp w0, #7 bhi G_M5822_IG03
- ldr w0, [fp, #0x6C] // [V00 arg0]
+ ldr w0, [fp, #0x8C] // [V00 arg0]
mov w0, w0 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -53,31 +58,31 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #1 LSL #32 ldr x1, [x0] ; gcrRegs +[x1]
- add x0, fp, #24 // [V11 tmp8]
+ add x0, fp, #48 // [V12 tmp9]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x18] // [V11 tmp8]
+ ldr x0, [fp, #0x30] // [V12 tmp9]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=52 bbWeight=1 PerfScore 14.50 G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str xzr, [fp, #0x40] // [V10 tmp7] + add x1, fp, #64 // [V10 tmp7]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp5] - ldr x0, [fp, #0x30] // [V08 tmp5] - str xzr, [x0, #0x08] - ldr x1, [fp, #0x30] // [V08 tmp5]
+ str x0, [fp, #0x28] // [V13 tmp10] + ldr x1, [fp, #0x28] // [V13 tmp10]
; gcrRegs +[x1]
- add x0, fp, #32 // [V10 tmp7]
+ add x0, fp, #56 // [V11 tmp8]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -85,24 +90,24 @@ G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x20] // [V10 tmp7]
+ ldr x0, [fp, #0x38] // [V11 tmp8]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str xzr, [fp, #0x50] // [V08 tmp5] + add x1, fp, #80 // [V08 tmp5]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp5] - ldr x0, [fp, #0x30] // [V08 tmp5] - str xzr, [x0, #0x08] - ldr x1, [fp, #0x30] // [V08 tmp5]
+ str x0, [fp, #0x20] // [V14 tmp11] + ldr x1, [fp, #0x20] // [V14 tmp11]
; gcrRegs +[x1]
- add x0, fp, #40 // [V09 tmp6]
+ add x0, fp, #72 // [V09 tmp6]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -110,11 +115,11 @@ G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x28] // [V09 tmp6]
+ ldr x0, [fp, #0x48] // [V09 tmp6]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -123,12 +128,12 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_BOX
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V12 tmp9] - ldr x1, [fp, #0x10] // [V12 tmp9]
+ str x0, [fp, #0x18] // [V15 tmp12] + ldr x1, [fp, #0x18] // [V15 tmp12]
; gcrRegs +[x1]
- add x0, fp, #56 // [V07 tmp4]
+ add x0, fp, #88 // [V07 tmp4]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -136,24 +141,24 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x38] // [V07 tmp4]
+ ldr x0, [fp, #0x58] // [V07 tmp4]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=72 bbWeight=1 PerfScore 17.00 G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ str wzr, [fp, #0x6C] // [V05 tmp2] + add x1, fp, #108 // [V05 tmp2]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_ISINSTANCEOF_EXCEPTION
; gcrRegs +[x0]
- str x0, [fp, #0x48] // [V05 tmp2] - ldr x0, [fp, #0x48] // [V05 tmp2] - str wzr, [x0, #0x08] - ldr x1, [fp, #0x48] // [V05 tmp2]
+ str x0, [fp, #0x10] // [V16 tmp13] + ldr x1, [fp, #0x10] // [V16 tmp13]
; gcrRegs +[x1]
- add x0, fp, #64 // [V06 tmp3]
+ add x0, fp, #96 // [V06 tmp3]
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -161,11 +166,11 @@ G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x40] // [V06 tmp3]
+ ldr x0, [fp, #0x60] // [V06 tmp3]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11
- ;; size=68 bbWeight=1 PerfScore 18.50
+ ;; size=68 bbWeight=1 PerfScore 17.00
G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] movz x0, #0xD1FFAB1E @@ -173,32 +178,32 @@ G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #1 LSL #32 ldr x1, [x0] ; gcrRegs +[x1]
- add x0, fp, #80 // [V04 tmp1]
+ add x0, fp, #112 // [V04 tmp1]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2 ; gcrRegs -[x1]
- ldr x0, [fp, #0x50] // [V04 tmp1]
+ ldr x0, [fp, #0x70] // [V04 tmp1]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
b G_M5822_IG11 ;; size=52 bbWeight=1 PerfScore 14.50 G_M5822_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
- str xzr, [fp, #0x58] // [V02 loc1] - ldr x0, [fp, #0x58] // [V02 loc1]
+ str xzr, [fp, #0x78] // [V02 loc1] + ldr x0, [fp, #0x78] // [V02 loc1]
; gcrRegs +[x0]
- str x0, [fp, #0x60] // [V01 loc0]
+ str x0, [fp, #0x80] // [V01 loc0]
;; size=12 bbWeight=1 PerfScore 4.00 G_M5822_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] ...

+4 (+1.64%) : 3543.dasm - System.PlatformDetection+<>c:<.cctor>b_5095():ubyte:this (Tier0)

@@ -78,27 +78,30 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=32 bbWeight=1 PerfScore 9.00 G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ ldr x1, [fp, #0x18] // [V07 tmp5] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldrh w1, [x0] + strh w1, [fp, #0x40]
add x0, fp, #64 // [V01 loc0]
- ldr x2, [fp, #0x18] // [V07 tmp5] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - add x0, fp, #64 // [V01 loc0]
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ;; size=48 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 14.50
G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
; ============================================================ Unwind Info: @@ -109,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+1.64%) : 3824.dasm - System.PlatformDetection+<>c:<.cctor>b_5094():ubyte:this (Tier0)

@@ -78,27 +78,30 @@ G_M61529_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=32 bbWeight=1 PerfScore 9.00 G_M61529_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0]
+ ldr x1, [fp, #0x18] // [V07 tmp5] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #2 LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1] + ; byrRegs +[x0] + ldrh w1, [x0] + strh w1, [fp, #0x40]
add x0, fp, #64 // [V01 loc0]
- ldr x2, [fp, #0x18] // [V07 tmp5] - ; gcrRegs +[x2] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #2 LSL #32 - bl CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[x2] - add x0, fp, #64 // [V01 loc0]
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #2 LSL #32 ldr x1, [x1] blr x1
- ;; size=48 bbWeight=1 PerfScore 11.00
+ ;; size=52 bbWeight=1 PerfScore 14.50
G_M61529_IG06: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x50 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 244, prolog size 24, PerfScore 62.00, instruction count 61, allocated bytes for code 244 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
+; Total bytes of code 248, prolog size 24, PerfScore 65.50, instruction count 62, allocated bytes for code 248 (MethodHash=de510fa6) for method System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
; ============================================================ Unwind Info: @@ -109,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-24 (-31.58%) : 2227.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M41558_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M41558_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-26.19%) : 2363.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilderSystem.ValueTuple3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray1+Builder[System.ValueTuple`3[int,int,System.__Canon]

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP
-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect" -; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup" -; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 24 @@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, x0, [fp, #0x18] // [V01 loc0] mov x19, x0 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M7461_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; gcrRegs +[x0] str x0, [fp, #0x18] // [V01 loc0]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M7461_IG08 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x18] - cbz x1, G_M7461_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this movk x2, #0xD1FFAB1E LSL #16 @@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 6.00 -G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 19.00 +G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
; ============================================================ Unwind Info: @@ -99,7 +69,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 601.dasm - System.Linq.Enumerable:SetCountAndGetSpanSystem.__Canon:System.Span`1System.__Canon

@@ -7,22 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] mov w21, w2 ;; size=32 bbWeight=1 PerfScore 6.00
-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M26687_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] mov w2, w21 @@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M26687_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M26687_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M26687_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 17.50 +G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+16.67%) : 7257.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValidSystem.__Canon:ubyte (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def -; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def
+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def +; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -21,39 +21,39 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"
+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP -; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP +; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"
-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect" -; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
-G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x70]
+ stp x19, x20, [sp, #0x68] + str x21, [sp, #0x78]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20] stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x68] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=40 bbWeight=1 PerfScore 8.00 -G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ str x0, [fp, #0x60] + mov x19, x0 + mov x20, x1 + ; gcrRegs +[x20] + ;; size=48 bbWeight=1 PerfScore 9.50 +G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
tst w2, #255
- beq G_M36549_IG09
+ beq G_M36549_IG10
;; size=8 bbWeight=1 PerfScore 1.50
-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + mov x0, x20
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this movk x1, #0xD1FFAB1E LSL #16 @@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] ldr wzr, [x0] blr x1
- ; gcrRegs -[x19] - mov x19, x0 - ; gcrRegs +[x19] - mov w20, w1 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ldr w0, [x0, #0x10]
+ ; gcrRegs -[x20] + mov x20, x0 + ; gcrRegs +[x20] + mov w21, w1 + b G_M36549_IG05 + ;; size=40 bbWeight=0.50 PerfScore 5.50 +G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w20, w0 - bge G_M36549_IG05 - ;; size=56 bbWeight=0.50 PerfScore 9.00 -G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x08]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- add x8, fp, #24 // [V04 loc1] - mov w1, w20
+ add x8, fp, #16 // [V04 loc1] + mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 @@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x2 ; gcrRegs -[x0]
- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c]
sub w1, w0, #1 sub w0, w0, #22 cmp w1, #1 ccmp w0, #1, z, hi
- bls G_M36549_IG07 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldr w0, [x0, #0x10] - ; gcrRegs -[x0] - cmp w20, w0 - blt G_M36549_IG04 - ;; size=80 bbWeight=4 PerfScore 102.00 -G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M36549_IG11 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M36549_IG12 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bls G_M36549_IG08 + ;; size=100 bbWeight=2 PerfScore 47.00 +G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ bl CORINFO_HELP_MEMCPY + add w21, w21, #1 + ldr x0, [x20, #0x08] + ; gcrRegs +[x0] + ldr w0, [x0, #0x10] + ; gcrRegs -[x0] + cmp w21, w0 + blt G_M36549_IG04 + ;; size=40 bbWeight=4 PerfScore 44.00 +G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x20] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x20
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x19] - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70]
+ ; gcrRegs -[x1 x20] + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +178,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- ...

+24 (+23.08%) : 5869.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -8,69 +8,68 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp str x0, [fp, #0x10]
- mov x20, x1
+ mov x19, x0 + mov x21, x1 + ; gcrRegs +[x21] + mov w22, w2 + mov x20, x3
; gcrRegs +[x20]
- mov w21, w2 - mov x19, x3 - ; gcrRegs +[x19] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x11, [x1, #0x10] - cbz x11, G_M18340_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M18340_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 7.50 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x11, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x20
+ bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x21
; gcrRegs +[x0]
- mov x1, x19
+ mov x11, x23 + mov x1, x20
; gcrRegs +[x1]
- ldr x2, [x11]
+ ldr x2, [x23]
blr x2
- ; gcrRegs -[x1 x19-x20] - uxtb w1, w21 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28]
+ ; gcrRegs -[x1 x20-x21] + uxtb w1, w22 + ;; size=68 bbWeight=1 PerfScore 12.50 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,9 +88,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next
C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+24 (+31.58%) : 6579.dasm - System.Collections.Immutable.ImmutableArray1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -8,57 +8,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def -; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
; ; Lcl frame size = 8 G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp str x1, [fp, #0x10]
- mov x19, x0 - ; byrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M44373_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M44373_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x19, x1 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x1, [x19]
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x1, [x20]
; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ mov x0, x21 + bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1] +[x0]
- ; byrRegs -[x19] - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ; byrRegs -[x20] + ;; size=56 bbWeight=1 PerfScore 11.00 +G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -77,10 +74,9 @@ 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
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

realworld.run.osx.arm64.checked.mch

-24 (-31.58%) : 10962.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M15963_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M15963_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 2385.dasm - Microsoft.FSharp.Control.AsyncPrimitives:MakeAsyncSystem.__Canon:Microsoft.FSharp.Control.FSharpAsync`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M3011_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M3011_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M3011_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 3229.dasm - Microsoft.FSharp.Collections.IEnumerator:mkSeqSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M38576_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M38576_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M38576_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.62%) : 5972.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkbinopty3System.Canon,System.Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -9,47 +9,38 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def -; V02 arg1 [V02,T08] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> -; V04 arg3 [V04,T10] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> +; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V07 tmp2 [V07,T24] ( 2, 4 ) long -> x0 "spilling helperCall" -; V08 tmp3 [V08,T25] ( 2, 4 ) long -> x24 "spilling helperCall" -; V09 tmp4 [V09,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V10 tmp5 [V10,T02] ( 3, 6 ) long -> x23 "spilling helperCall" -;* V11 tmp6 [V11,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V12 tmp7 [V12,T18] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V13 tmp8 [V13,T26] ( 2, 4 ) long -> x23 "spilling helperCall" -; V14 tmp9 [V14,T03] ( 3, 6 ) long -> x24 "spilling helperCall"
+; V06 tmp1 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall" +; V07 tmp2 [V07,T13] ( 2, 4 ) long -> x24 "spilling helperCall" +; V08 tmp3 [V08,T14] ( 2, 4 ) long -> x25 "spilling helperCall" +; V09 tmp4 [V09,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V10 tmp5 [V10,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V11 tmp6 [V11,T16] ( 2, 4 ) long -> x24 "spilling helperCall" +; V12 tmp7 [V12,T06] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V13 tmp8 [V13,T17] ( 2, 4 ) long -> x23 "spilling helperCall" +; V14 tmp9 [V14,T18] ( 2, 4 ) long -> x25 "spilling helperCall"
; V15 tmp10 [V15,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V17 tmp12 [V17,T19] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V18 tmp13 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp14 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 tmp15 [V20,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V21 tmp16 [V21,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V22 cse0 [V22,T07] ( 4, 4 ) long -> x23 "CSE - aggressive" -; V23 cse1 [V23,T13] ( 3, 3 ) long -> x24 "CSE - moderate" -; V24 rat0 [V24,T14] ( 3, 4 ) long -> x23 "runtime lookup" -; V25 rat1 [V25,T04] ( 3, 5.60) long -> x23 "fgMakeTemp is creating a new local variable" -; V26 rat2 [V26,T15] ( 3, 4 ) long -> x24 "runtime lookup" -; V27 rat3 [V27,T05] ( 3, 5.60) long -> x0 "spilling expr" -; V28 rat4 [V28,T11] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable" -; V29 rat5 [V29,T16] ( 3, 4 ) long -> x0 "runtime lookup" -; V30 rat6 [V30,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V31 rat7 [V31,T12] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T07] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V18 tmp13 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp14 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V20 tmp15 [V20,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V21 tmp16 [V21,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x1 mov x20, x2 ; gcrRegs +[x20] @@ -57,26 +48,27 @@ G_M2804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x21] mov x22, x4 ; gcrRegs +[x22]
- ;; size=40 bbWeight=1 PerfScore 7.50 -G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x23, [x0, #0x18] - cbz x23, G_M2804_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M2804_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M2804_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ ;; size=44 bbWeight=1 PerfScore 8.50 +G_M2804_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x23, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x25, x0
mov x0, x23
- mov x24, x23
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -97,29 +89,20 @@ G_M2804_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs -[x1-x2 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38]
+ mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x10] - cmp x1, #32 - ble G_M2804_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M2804_IG06: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x24, [x0, #0x20] - cbz x24, G_M2804_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M2804_IG07: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M2804_IG08: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x24, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - mov x0, x23
+ mov x0, x25
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -140,33 +123,29 @@ G_M2804_IG09: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs -[x1-x2 x21] +[x0] mov x21, x0 ; gcrRegs +[x21]
- mov x23, x24 - ldr x0, [x19, #0x38]
+ mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x10] - cmp x1, #40 - ble G_M2804_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M2804_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x28] - cbz x0, G_M2804_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M2804_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M2804_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M2804_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19]
- mov x0, x23
+ mov x0, x24
; gcrRegs -[x0] movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -178,7 +157,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs +[x2] mov x1, x21 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x23
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -190,7 +169,7 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; gcrRegs +[x2] mov x1, x20 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x25
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -214,27 +193,28 @@ G_M2804_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=000 ; byrRegs -[x14] mov x0, x19 ; gcrRegs +[x0]
- ;; size=124 bbWeight=1 PerfScore 26.00 -G_M2804_IG14: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ;; size=432 bbWeight=1 PerfScore 80.50 +G_M2804_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x25, [sp, #0x48] + ldp x23, x24, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 452, prolog size 24, PerfScore 100.02, instruction count 113, allocated bytes for code 452 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 500, prolog size 28, PerfScore 96.00, instruction count 125, allocated bytes for code 500 (MethodHash=023bf50b) for method FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 ...

+48 (+10.81%) : 5969.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkbinoptySystem.__Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -9,68 +9,94 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall" -; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall" -; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall" -;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall" -; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"
+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall" +; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall" +; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall" +; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall" +; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall" +; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall"
; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate" -; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup" -; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup" -; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable" -; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup" -; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr" -; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50 -G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x21, [x0, #0x10] - cbz x21, G_M20173_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M20173_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=1 PerfScore 7.50 +G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x21, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x21
- mov x22, x21
+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs +[x0] + mov x2, x0 + ; gcrRegs +[x2] + mov x1, x20 + ; gcrRegs +[x1] + mov x0, x22 + ; gcrRegs -[x0] + movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x1-x2] +[x0] + mov x21, x0 + ; gcrRegs +[x21] + mov x0, x19 + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x23
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1-x2] +[x0] mov x22, x0 ; gcrRegs +[x22]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M20173_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - ldr x23, [x0, #0x18] - cbz x23, G_M20173_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x23, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - mov x0, x21 - movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - mov x2, x0 - ; gcrRegs +[x2] - mov x1, x20 - ; gcrRegs +[x1] - mov x0, x21 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - mov x24, x23 - ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #32 - ble G_M20173_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x20] - cbz x0, G_M20173_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x1, x21 - ; gcrRegs +[x1] - mov x0, x23 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2 x21] +[x0] - mov x2, x0 - ; gcrRegs +[x2]
mov x1, x22 ; gcrRegs +[x1] mov x0, x23 @@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2 x22] +[x0]
+ mov x2, x0 + ; gcrRegs +[x2] + mov x1, x21 + ; gcrRegs +[x1] + mov x0, x25
...

+20 (+13.51%) : 9004.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def -; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def -; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def +; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def +; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -19,83 +19,80 @@ ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect" -; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup" -; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp str x0, [fp, #0x18]
+ mov x20, x0 + mov x22, x1 + ; gcrRegs +[x22]
mov x19, x2 ; byrRegs +[x19]
- mov x20, x8 - ; byrRegs +[x20] - mov x2, x1 - ; gcrRegs +[x2] - ;; size=28 bbWeight=1 PerfScore 5.00 -G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz - ldr w1, [x19, #0x10] - cmp w1, #1 - beq G_M63339_IG08 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - ; gcrRegs -[x2] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M63339_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref - mov x0, x2 - b G_M63339_IG06 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov x21, x8 + ; byrRegs +[x21] + ;; size=36 bbWeight=1 PerfScore 6.50 +G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz + mov x0, x20
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + ldr w0, [x19, #0x10] + cmp w0, #1 + beq G_M63339_IG05 + ;; size=32 bbWeight=1 PerfScore 7.50 +G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref + ; gcrRegs -[x22] + mov x0, x20 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldr x1, [x19] ; gcrRegs +[x1]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=44 bbWeight=0.50 PerfScore 5.50 +G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref - ; gcrRegs -[x1] +[x2]
+ ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref + ; gcrRegs -[x1] +[x22]
; byrRegs -[x8 x19]
- mov x0, x2
+ mov x0, x22
; gcrRegs +[x0]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] mov x1, xzr
- ldr x2, [x2] - ; gcrRegs -[x2]
+ ldr x2, [x22]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +114,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 138 115 3 20 -6,112 +28
benchmarks.run_pgo.osx.arm64.checked.mch 291 248 10 33 -18,812 +88
benchmarks.run_tiered.osx.arm64.checked.mch 254 218 2 34 -17,072 +24
coreclr_tests.run.osx.arm64.checked.mch 102 70 30 2 -376 +200
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 256 188 46 22 -5,156 +780
libraries_tests.run.osx.arm64.Release.mch 144 134 3 7 -10,720 +12
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 185 134 12 39 -7,300 +308
realworld.run.osx.arm64.checked.mch 358 324 15 19 -17,808 +472
1,728 1,431 121 176 -83,356 +1,912

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 5,045 3 5,042 10 (0.10%) 4,157 (43.31%)
benchmarks.run_pgo.osx.arm64.checked.mch 16,644 15,001 1,643 5 (0.02%) 6,798 (28.52%)
benchmarks.run_tiered.osx.arm64.checked.mch 14,882 13,053 1,829 6 (0.03%) 5,088 (24.98%)
coreclr_tests.run.osx.arm64.checked.mch 1,292 1,087 205 0 (0.00%) 1,495 (46.97%)
libraries.crossgen2.osx.arm64.checked.mch 8,173 10 8,163 13 (0.11%) 2,899 (25.28%)
libraries.pmi.osx.arm64.checked.mch 12,006 0 12,006 1 (0.01%) 4,130 (24.98%)
libraries_tests.run.osx.arm64.Release.mch 6,428 5,946 482 2 (0.02%) 4,151 (37.82%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 5,290 0 5,290 3 (0.03%) 4,000 (41.30%)
realworld.run.osx.arm64.checked.mch 9,273 1 9,272 4 (0.03%) 4,955 (33.88%)
79,033 35,101 43,932 44 (0.04%) 37,673 (31.32%)

jit-analyze output

benchmarks.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: 1030644 (overridden on cmd)
Total bytes of diff: 1024560 (overridden on cmd)
Total bytes of delta: -6084 (-0.59 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 2189.dasm (6.25 % of base)
           4 : 7659.dasm (2.70 % of base)
           4 : 7893.dasm (4.55 % of base)

Top file improvements (bytes):
        -328 : 6071.dasm (-23.98 % of base)
        -212 : 233.dasm (-30.99 % of base)
        -212 : 729.dasm (-33.12 % of base)
        -208 : 1985.dasm (-16.00 % of base)
        -184 : 687.dasm (-26.14 % of base)
        -184 : 237.dasm (-24.34 % of base)
        -156 : 5357.dasm (-29.32 % of base)
        -144 : 2851.dasm (-15.06 % of base)
        -136 : 2090.dasm (-30.63 % of base)
        -132 : 5598.dasm (-19.30 % of base)
        -128 : 6175.dasm (-25.81 % of base)
        -128 : 625.dasm (-18.71 % of base)
        -128 : 2913.dasm (-27.12 % of base)
        -100 : 5398.dasm (-24.04 % of base)
        -100 : 1903.dasm (-20.49 % of base)
        -100 : 202.dasm (-19.84 % of base)
        -100 : 8506.dasm (-15.82 % of base)
         -92 : 5394.dasm (-22.12 % of base)
         -76 : 8072.dasm (-18.27 % of base)
         -72 : 2298.dasm (-23.38 % of base)

48 total files with Code Size differences (45 improved, 3 regressed), 20 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 2189.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (2.70 % of base) : 7659.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           4 (4.55 % of base) : 7893.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 6071.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-16.00 % of base) : 1985.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -156 (-29.32 % of base) : 5357.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -144 (-15.06 % of base) : 2851.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
        -136 (-30.63 % of base) : 2090.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 5598.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -128 (-27.12 % of base) : 2913.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 6175.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 625.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-15.82 % of base) : 8506.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 1903.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 5398.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-19.84 % of base) : 202.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
         -92 (-22.12 % of base) : 5394.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -76 (-18.27 % of base) : 8072.dasm - System.Threading.Tasks.Task:WhenAny[System.__Canon](System.__Canon,System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
         -72 (-20.69 % of base) : 9185.dasm - System.Linq.Enumerable:GroupBy[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          20 (6.25 % of base) : 2189.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (4.55 % of base) : 7893.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (2.70 % of base) : 7659.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -52 (-30.95 % of base) : 8721.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 2090.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 5357.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 2913.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -52 (-27.08 % of base) : 1806.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 6175.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 1311.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-25.00 % of base) : 5866.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-24.44 % of base) : 1412.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 1314.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-24.04 % of base) : 5398.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -72 (-24.00 % of base) : 236.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 6071.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -44 (-23.91 % of base) : 7772.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -72 (-23.38 % of base) : 5356.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-23.38 % of base) : 2298.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)


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: 2510584 (overridden on cmd)
Total bytes of diff: 2491860 (overridden on cmd)
Total bytes of delta: -18724 (-0.75 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 5316.dasm (10.53 % of base)
           8 : 17580.dasm (6.06 % of base)
           8 : 17884.dasm (6.06 % of base)
           8 : 19759.dasm (6.06 % of base)
           8 : 21052.dasm (6.06 % of base)
           8 : 21594.dasm (6.06 % of base)
           8 : 23985.dasm (6.06 % of base)
           8 : 25769.dasm (6.06 % of base)
           8 : 8638.dasm (6.06 % of base)
           8 : 16183.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 1885.dasm (-43.85 % of base)
        -428 : 624.dasm (-41.96 % of base)
        -372 : 1810.dasm (-36.19 % of base)
        -372 : 630.dasm (-35.36 % of base)
        -332 : 22103.dasm (-28.92 % of base)
        -316 : 3933.dasm (-38.54 % of base)
        -316 : 12492.dasm (-37.44 % of base)
        -296 : 6752.dasm (-38.14 % of base)
        -268 : 2201.dasm (-40.36 % of base)
        -260 : 1673.dasm (-27.66 % of base)
        -260 : 3975.dasm (-39.88 % of base)
        -260 : 16009.dasm (-35.71 % of base)
        -240 : 265.dasm (-32.97 % of base)
        -212 : 16066.dasm (-33.12 % of base)
        -212 : 19966.dasm (-33.12 % of base)
        -204 : 22033.dasm (-25.25 % of base)
        -204 : 3952.dasm (-32.69 % of base)
        -204 : 3959.dasm (-30.00 % of base)
        -204 : 552.dasm (-30.18 % of base)
        -204 : 9560.dasm (-23.50 % of base)

60 total files with Code Size differences (50 improved, 10 regressed), 23 unchanged.

Top method regressions (bytes):
          16 (10.53 % of base) : 5316.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 17580.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19759.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21594.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23985.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25769.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8638.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 1810.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -332 (-28.92 % of base) : 22103.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
        -316 (-38.54 % of base) : 3933.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 12492.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-38.14 % of base) : 6752.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -268 (-40.36 % of base) : 2201.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -260 (-39.88 % of base) : 3975.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -260 (-35.71 % of base) : 16009.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1673.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 265.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 16066.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 19966.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.25 % of base) : 22033.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-30.00 % of base) : 3959.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-23.50 % of base) : 9560.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -204 (-32.69 % of base) : 3952.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 552.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)

Top method regressions (percentages):
          16 (10.53 % of base) : 5316.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 17580.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17884.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19759.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21594.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 23985.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25769.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8638.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16183.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 20606.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -268 (-40.36 % of base) : 2201.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -260 (-39.88 % of base) : 3975.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 6286.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-38.98 % of base) : 11889.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -316 (-38.54 % of base) : 3933.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 12330.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-38.33 % of base) : 12812.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 2914.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -296 (-38.14 % of base) : 6752.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 12492.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -148 (-37.00 % of base) : 1871.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 3932.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 16674.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 10809.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -148 (-36.27 % of base) : 16357.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
        -148 (-36.27 % of base) : 5495.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -372 (-36.19 % of base) : 1810.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)


benchmarks.run_tiered.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: 2279232 (overridden on cmd)
Total bytes of diff: 2262184 (overridden on cmd)
Total bytes of delta: -17048 (-0.75 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 8975.dasm (10.53 % of base)
           8 : 4906.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 624.dasm (-41.96 % of base)
        -428 : 1885.dasm (-43.85 % of base)
        -372 : 7551.dasm (-32.98 % of base)
        -372 : 1812.dasm (-36.19 % of base)
        -372 : 630.dasm (-35.36 % of base)
        -316 : 8286.dasm (-37.44 % of base)
        -316 : 3884.dasm (-38.54 % of base)
        -296 : 3642.dasm (-38.14 % of base)
        -260 : 1675.dasm (-27.66 % of base)
        -260 : 7622.dasm (-39.88 % of base)
        -260 : 10830.dasm (-40.37 % of base)
        -260 : 7472.dasm (-35.71 % of base)
        -240 : 265.dasm (-32.97 % of base)
        -212 : 7504.dasm (-33.12 % of base)
        -204 : 18351.dasm (-25.25 % of base)
        -204 : 3844.dasm (-30.00 % of base)
        -204 : 7626.dasm (-32.69 % of base)
        -204 : 17440.dasm (-32.28 % of base)
        -204 : 552.dasm (-30.18 % of base)
        -184 : 1869.dasm (-30.87 % of base)

52 total files with Code Size differences (50 improved, 2 regressed), 27 unchanged.

Top method regressions (bytes):
          16 (10.53 % of base) : 8975.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 4906.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-32.98 % of base) : 7551.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -372 (-35.36 % of base) : 630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 1812.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-38.54 % of base) : 3884.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 8286.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-38.14 % of base) : 3642.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-39.88 % of base) : 7622.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 10830.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-35.71 % of base) : 7472.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1675.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 265.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 7504.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.25 % of base) : 18351.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-32.28 % of base) : 17440.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 3844.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-32.69 % of base) : 7626.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 552.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
        -184 (-30.87 % of base) : 1869.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)

Top method regressions (percentages):
          16 (10.53 % of base) : 8975.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 4906.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 1885.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 624.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 19453.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 10830.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-39.88 % of base) : 7622.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -148 (-39.78 % of base) : 4451.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-38.98 % of base) : 16916.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -316 (-38.54 % of base) : 3884.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 17323.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-38.33 % of base) : 10211.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 8579.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -296 (-38.14 % of base) : 3642.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 8286.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -148 (-37.00 % of base) : 1871.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 3883.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 10948.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 2752.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -148 (-36.27 % of base) : 12586.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
        -148 (-36.27 % of base) : 2750.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -372 (-36.19 % of base) : 1812.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)


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: 312480 (overridden on cmd)
Total bytes of diff: 312304 (overridden on cmd)
Total bytes of delta: -176 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 2515.dasm (9.86 % of base)
          12 : 2213.dasm (7.89 % of base)
          12 : 2245.dasm (8.33 % of base)
          12 : 2495.dasm (6.82 % of base)
          12 : 2505.dasm (6.98 % of base)
          12 : 3122.dasm (6.12 % of base)
          12 : 2060.dasm (7.89 % of base)
          12 : 2425.dasm (7.14 % of base)
           4 : 1967.dasm (3.70 % of base)
           4 : 2355.dasm (3.70 % of base)
           4 : 2405.dasm (3.70 % of base)
           4 : 2445.dasm (3.70 % of base)
           4 : 2455.dasm (3.70 % of base)
           4 : 2485.dasm (3.70 % of base)
           4 : 3092.dasm (2.63 % of base)
           4 : 3094.dasm (2.63 % of base)
           4 : 3096.dasm (2.63 % of base)
           4 : 1960.dasm (3.70 % of base)
           4 : 1979.dasm (3.70 % of base)
           4 : 2295.dasm (3.70 % of base)

Top file improvements (bytes):
         -36 : 1469.dasm (-15.79 % of base)
         -36 : 100.dasm (-28.12 % of base)
         -36 : 544.dasm (-15.79 % of base)
          -4 : 2151.dasm (-3.70 % of base)
          -4 : 2201.dasm (-3.57 % of base)
          -4 : 2233.dasm (-3.57 % of base)
          -4 : 2325.dasm (-3.03 % of base)
          -4 : 1816.dasm (-3.70 % of base)
          -4 : 1822.dasm (-3.57 % of base)
          -4 : 1991.dasm (-3.70 % of base)
          -4 : 2002.dasm (-3.70 % of base)
          -4 : 2020.dasm (-3.70 % of base)
          -4 : 2042.dasm (-3.57 % of base)
          -4 : 2101.dasm (-3.70 % of base)
          -4 : 2121.dasm (-3.70 % of base)
          -4 : 2161.dasm (-3.70 % of base)
          -4 : 2171.dasm (-3.57 % of base)
          -4 : 1809.dasm (-3.70 % of base)
          -4 : 1997.dasm (-3.70 % of base)
          -4 : 2014.dasm (-3.70 % of base)

56 total files with Code Size differences (32 improved, 24 regressed), 2 unchanged.

Top method regressions (bytes):
          28 (9.86 % of base) : 2515.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 2213.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 2245.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.12 % of base) : 3122.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.89 % of base) : 2060.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 2425.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 2495.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 2505.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 1960.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (2.63 % of base) : 3088.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 1967.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 2295.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2355.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (2.63 % of base) : 3092.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 2405.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2415.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2445.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2455.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (2.63 % of base) : 3094.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 1979.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)

Top method improvements (bytes):
         -36 (-28.12 % of base) : 100.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -36 (-15.79 % of base) : 1469.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
         -36 (-15.79 % of base) : 544.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
          -4 (-3.70 % of base) : 1809.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 2091.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2014.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 2181.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2020.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2191.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2025.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 2201.dasm - NullableTest12:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2031.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 2042.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 2233.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2263.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2273.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 1816.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 2101.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.03 % of base) : 2325.dasm - NullableTest24:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.57 % of base) : 1822.dasm - NullableTest3:BoxUnboxToQ(System.Enum):ubyte (Tier0)

Top method regressions (percentages):
          28 (9.86 % of base) : 2515.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 2245.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 2213.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 2060.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 2425.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 2505.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 2495.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.12 % of base) : 3122.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           4 (3.70 % of base) : 1960.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 1967.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 2295.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2355.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2405.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2415.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2445.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2455.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 1979.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 2465.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2475.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 2485.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method improvements (percentages):
         -36 (-28.12 % of base) : 100.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -36 (-15.79 % of base) : 1469.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Instrumented Tier0)
         -36 (-15.79 % of base) : 544.dasm - System.Text.RegularExpressions.Regex:RunAllMatchesWithCallback[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]](System.String,int,byref,System.Text.RegularExpressions.MatchCallback`1[System.ValueTuple`6[System.__Canon,System.__Canon,System.Text.StructListBuilder`1[int],System.ReadOnlyMemory`1[ushort],int,int]],int,ubyte):this (Tier0)
          -4 (-3.70 % of base) : 1809.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 2091.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2014.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2020.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2191.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2025.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2031.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2263.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2273.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 1816.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 2101.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2111.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2121.dasm - NullableTest4:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 2131.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 1991.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 2141.dasm - NullableTest6:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 1997.dasm - NullableTest7:BoxUnboxToQ(System.IComparable):ubyte (Tier0)


libraries.pmi.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: 1249200 (overridden on cmd)
Total bytes of diff: 1244824 (overridden on cmd)
Total bytes of delta: -4376 (-0.35 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          80 : 12069.dasm (29.85 % of base)
          68 : 7298.dasm (35.42 % of base)
          68 : 7318.dasm (35.42 % of base)
          60 : 7320.dasm (25.86 % of base)
          60 : 7302.dasm (25.86 % of base)
          52 : 7296.dasm (39.39 % of base)
          52 : 7316.dasm (39.39 % of base)
          40 : 7304.dasm (17.24 % of base)
          32 : 6939.dasm (11.76 % of base)
          24 : 7322.dasm (17.14 % of base)
          24 : 8774.dasm (5.41 % of base)
          24 : 8781.dasm (5.66 % of base)
          24 : 6937.dasm (10.71 % of base)
          20 : 6941.dasm (6.58 % of base)
          16 : 12035.dasm (9.76 % of base)
           8 : 8760.dasm (2.13 % of base)
           8 : 8767.dasm (2.17 % of base)
           8 : 7300.dasm (5.56 % of base)
           4 : 4547.dasm (5.56 % of base)
           4 : 4548.dasm (4.55 % of base)

Top file improvements (bytes):
        -108 : 12031.dasm (-25.47 % of base)
        -108 : 12222.dasm (-25.47 % of base)
         -80 : 8011.dasm (-23.81 % of base)
         -72 : 12097.dasm (-13.95 % of base)
         -72 : 12146.dasm (-13.95 % of base)
         -72 : 12116.dasm (-13.95 % of base)
         -72 : 12126.dasm (-13.95 % of base)
         -72 : 12136.dasm (-13.95 % of base)
         -72 : 7353.dasm (-19.35 % of base)
         -68 : 12236.dasm (-19.54 % of base)
         -64 : 1691.dasm (-11.03 % of base)
         -60 : 12122.dasm (-14.15 % of base)
         -60 : 12132.dasm (-14.15 % of base)
         -60 : 12134.dasm (-14.15 % of base)
         -60 : 12144.dasm (-14.15 % of base)
         -60 : 12105.dasm (-14.15 % of base)
         -60 : 12124.dasm (-14.15 % of base)
         -60 : 12142.dasm (-14.15 % of base)
         -60 : 12154.dasm (-14.15 % of base)
         -60 : 93.dasm (-14.15 % of base)

77 total files with Code Size differences (38 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
          80 (29.85 % of base) : 12069.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7318.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7298.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7320.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7302.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7316.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7296.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          40 (17.24 % of base) : 7304.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
          32 (11.76 % of base) : 6939.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
          24 (10.71 % of base) : 6937.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
          24 (17.14 % of base) : 7322.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          24 (5.41 % of base) : 8774.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          24 (5.66 % of base) : 8781.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          20 (6.58 % of base) : 6941.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
          16 (9.76 % of base) : 12035.dasm - System.Numerics.Vector:AndNot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
           8 (5.56 % of base) : 7300.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
           8 (2.13 % of base) : 8760.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           8 (2.17 % of base) : 8767.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           4 (5.56 % of base) : 4356.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
           4 (5.56 % of base) : 4406.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)

Top method improvements (bytes):
        -108 (-25.47 % of base) : 12031.dasm - System.Numerics.Vector:Abs[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
        -108 (-25.47 % of base) : 12222.dasm - System.Numerics.Vector:SquareRoot[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -80 (-23.81 % of base) : 8011.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
         -72 (-19.35 % of base) : 7353.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]],System.Comparison`1[System.__Canon]) (FullOpts)
         -72 (-13.95 % of base) : 12097.dasm - System.Numerics.Vector:Equals[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -72 (-13.95 % of base) : 12116.dasm - System.Numerics.Vector:GreaterThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -72 (-13.95 % of base) : 12126.dasm - System.Numerics.Vector:GreaterThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -72 (-13.95 % of base) : 12136.dasm - System.Numerics.Vector:LessThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -72 (-13.95 % of base) : 12146.dasm - System.Numerics.Vector:LessThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -68 (-19.54 % of base) : 12236.dasm - System.Numerics.Vector:Sum[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
         -64 (-11.03 % of base) : 1691.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -60 (-14.15 % of base) : 93.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
         -60 (-14.15 % of base) : 12105.dasm - System.Numerics.Vector:EqualsAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12122.dasm - System.Numerics.Vector:GreaterThanAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12124.dasm - System.Numerics.Vector:GreaterThanAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12132.dasm - System.Numerics.Vector:GreaterThanOrEqualAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12134.dasm - System.Numerics.Vector:GreaterThanOrEqualAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12142.dasm - System.Numerics.Vector:LessThanAll[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12144.dasm - System.Numerics.Vector:LessThanAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)
         -60 (-14.15 % of base) : 12154.dasm - System.Numerics.Vector:LessThanOrEqualAny[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):ubyte (FullOpts)

Top method regressions (percentages):
          52 (39.39 % of base) : 7316.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7296.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7318.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7298.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
          80 (29.85 % of base) : 12069.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7320.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7302.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
          40 (17.24 % of base) : 7304.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
          24 (17.14 % of base) : 7322.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          32 (11.76 % of base) : 6939.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
          24 (10.71 % of base) : 6937.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
          16 (9.76 % of base) : 12035.dasm - System.Numerics.Vector:AndNot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          20 (6.58 % of base) : 6941.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
          24 (5.66 % of base) : 8781.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           4 (5.56 % of base) : 4356.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
           4 (5.56 % of base) : 4406.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)
           4 (5.56 % of base) : 4372.dasm - System.Convert:ToChar(System.Object):ushort (FullOpts)
           4 (5.56 % of base) : 4547.dasm - System.Convert:ToDouble(System.Object):double (FullOpts)
           4 (5.56 % of base) : 4423.dasm - System.Convert:ToInt16(System.Object):short (FullOpts)
           4 (5.56 % of base) : 4459.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)

Top method improvements (percentages):
         -24 (-27.27 % of base) : 10636.dasm - System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
         -44 (-26.19 % of base) : 12243.dasm - System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
        -108 (-25.47 % of base) : 12031.dasm - System.Numerics.Vector:Abs[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
        -108 (-25.47 % of base) : 12222.dasm - System.Numerics.Vector:SquareRoot[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -24 (-25.00 % of base) : 12162.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -24 (-25.00 % of base) : 10643.dasm - System.Tuple:Create[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -20 (-25.00 % of base) : 10758.dasm - System.TupleExtensions:ToTuple[System.__Canon,System.Nullable`1[int]](System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -48 (-24.49 % of base) : 1485.dasm - System.Array:AsReadOnly[System.__Canon](System.__Canon[]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -24 (-24.00 % of base) : 2556.dasm - System.GC:AllocateArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
         -24 (-24.00 % of base) : 12037.dasm - System.Numerics.Vector:As[System.__Canon,System.Nullable`1[int]](System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.Nullable`1[int]] (FullOpts)
         -44 (-23.91 % of base) : 11600.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -80 (-23.81 % of base) : 8011.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
         -20 (-22.73 % of base) : 12156.dasm - System.Numerics.Vector:Load[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 12160.dasm - System.Numerics.Vector:LoadAlignedNonTemporal[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 10756.dasm - System.TupleExtensions:ToTuple[System.__Canon](System.ValueTuple`1[System.__Canon]):System.Tuple`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 10752.dasm - System.TupleExtensions:ToValueTuple[System.__Canon](System.Tuple`1[System.__Canon]):System.ValueTuple`1[System.__Canon] (FullOpts)
         -52 (-22.41 % of base) : 7367.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
         -52 (-22.41 % of base) : 7326.dasm - System.MemoryExtensions:Overlaps[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (FullOpts)
         -44 (-21.57 % of base) : 7324.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
         -24 (-21.43 % of base) : 12230.dasm - System.Numerics.Vector:StoreUnsafe[System.__Canon](System.Numerics.Vector`1[System.__Canon],byref) (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: 1052488 (overridden on cmd)
Total bytes of diff: 1041780 (overridden on cmd)
Total bytes of delta: -10708 (-1.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 8747.dasm (0.83 % of base)
           4 : 3543.dasm (1.64 % of base)
           4 : 3824.dasm (1.64 % of base)

Top file improvements (bytes):
        -428 : 25.dasm (-43.85 % of base)
        -428 : 20.dasm (-41.96 % of base)
        -372 : 115.dasm (-36.19 % of base)
        -372 : 947.dasm (-35.36 % of base)
        -316 : 6203.dasm (-38.54 % of base)
        -296 : 1549.dasm (-39.78 % of base)
        -260 : 3853.dasm (-40.37 % of base)
        -260 : 975.dasm (-27.66 % of base)
        -260 : 121.dasm (-40.37 % of base)
        -260 : 2468.dasm (-43.92 % of base)
        -204 : 7306.dasm (-36.43 % of base)
        -204 : 1190.dasm (-30.18 % of base)
        -184 : 1813.dasm (-15.44 % of base)
        -184 : 7296.dasm (-39.32 % of base)
        -184 : 990.dasm (-31.72 % of base)
        -148 : 90.dasm (-36.27 % of base)
        -148 : 22.dasm (-33.94 % of base)
        -148 : 6.dasm (-39.78 % of base)
        -148 : 6202.dasm (-36.63 % of base)
        -148 : 999.dasm (-30.83 % of base)

67 total files with Code Size differences (64 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
           4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
           4 (1.64 % of base) : 3824.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           4 (1.64 % of base) : 3543.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)

Top method improvements (bytes):
        -428 (-41.96 % of base) : 20.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 25.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 947.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 115.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-38.54 % of base) : 6203.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 1549.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 3853.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 121.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-27.66 % of base) : 975.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -260 (-43.92 % of base) : 2468.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -204 (-36.43 % of base) : 7306.dasm - System.Dynamic.Utils.ExpressionUtils:SameElements[System.__Canon](byref,System.Collections.Generic.IReadOnlyList`1[System.__Canon]):ubyte (Tier0)
        -204 (-30.18 % of base) : 1190.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -184 (-39.32 % of base) : 7296.dasm - System.Dynamic.Utils.ExpressionUtils:ReturnReadOnly[System.__Canon](byref):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -184 (-31.72 % of base) : 990.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -184 (-15.44 % of base) : 1813.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -148 (-39.78 % of base) : 6.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -148 (-30.83 % of base) : 999.dasm - System.Linq.Enumerable:GroupBy[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-33.94 % of base) : 22.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 6202.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.27 % of base) : 90.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)

Top method regressions (percentages):
           4 (1.64 % of base) : 3824.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           4 (1.64 % of base) : 3543.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
           4 (0.83 % of base) : 8747.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)

Top method improvements (percentages):
        -260 (-43.92 % of base) : 2468.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -428 (-43.85 % of base) : 25.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 20.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 3853.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 121.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -296 (-39.78 % of base) : 1549.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 6.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -184 (-39.32 % of base) : 7296.dasm - System.Dynamic.Utils.ExpressionUtils:ReturnReadOnly[System.__Canon](byref):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -92 (-38.98 % of base) : 6835.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -316 (-38.54 % of base) : 6203.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-37.70 % of base) : 2133.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
         -92 (-37.70 % of base) : 4440.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
         -92 (-37.70 % of base) : 1017.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
         -92 (-37.10 % of base) : 1800.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref,byref) (Tier0)
        -148 (-36.63 % of base) : 6202.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 1189.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 1137.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -204 (-36.43 % of base) : 7306.dasm - System.Dynamic.Utils.ExpressionUtils:SameElements[System.__Canon](byref,System.Collections.Generic.IReadOnlyList`1[System.__Canon]):ubyte (Tier0)
        -148 (-36.27 % of base) : 90.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -372 (-36.19 % of base) : 115.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)


librariestestsnotieredcompilation.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: 1037508 (overridden on cmd)
Total bytes of diff: 1030516 (overridden on cmd)
Total bytes of delta: -6992 (-0.67 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6724.dasm (8.99 % of base)
          64 : 4141.dasm (5.39 % of base)
          48 : 7257.dasm (16.67 % of base)
          24 : 5869.dasm (23.08 % of base)
          24 : 6579.dasm (31.58 % of base)
          24 : 3002.dasm (6.59 % of base)
          20 : 5919.dasm (16.13 % of base)
          20 : 69.dasm (6.25 % of base)
           4 : 9970.dasm (3.45 % of base)
           4 : 4721.dasm (3.45 % of base)
           4 : 5915.dasm (3.03 % of base)
           4 : 8574.dasm (1.89 % of base)

Top file improvements (bytes):
        -328 : 3162.dasm (-23.98 % of base)
        -328 : 993.dasm (-22.47 % of base)
        -212 : 3518.dasm (-12.62 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -212 : 13.dasm (-33.12 % of base)
        -200 : 3169.dasm (-19.69 % of base)
        -184 : 481.dasm (-24.34 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -176 : 3411.dasm (-27.85 % of base)
        -160 : 750.dasm (-17.62 % of base)
        -156 : 4608.dasm (-21.91 % of base)
        -136 : 6570.dasm (-18.68 % of base)
        -136 : 2291.dasm (-30.63 % of base)
        -132 : 512.dasm (-19.76 % of base)
        -128 : 494.dasm (-18.71 % of base)
        -128 : 860.dasm (-27.12 % of base)
        -128 : 9280.dasm (-17.88 % of base)
        -100 : 634.dasm (-21.93 % of base)
        -100 : 2187.dasm (-24.04 % of base)
         -96 : 3543.dasm (-12.83 % of base)

60 total files with Code Size differences (48 improved, 12 regressed), 25 unchanged.

Top method regressions (bytes):
          68 (8.99 % of base) : 6724.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          64 (5.39 % of base) : 4141.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          48 (16.67 % of base) : 7257.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          24 (23.08 % of base) : 5869.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          24 (31.58 % of base) : 6579.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (6.59 % of base) : 3002.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          20 (16.13 % of base) : 5919.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (1.89 % of base) : 8574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.03 % of base) : 5915.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           4 (3.45 % of base) : 4721.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 9970.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
        -328 (-22.47 % of base) : 993.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 3162.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-12.62 % of base) : 3518.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -200 (-19.69 % of base) : 3169.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 481.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -176 (-27.85 % of base) : 3411.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 750.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -156 (-21.91 % of base) : 4608.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
        -136 (-18.68 % of base) : 6570.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
        -136 (-30.63 % of base) : 2291.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.76 % of base) : 512.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-17.88 % of base) : 9280.dasm - System.Linq.Enumerable:TryGetSingle[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]](System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon]],byref):Microsoft.CodeAnalysis.ModifierInfo`1[System.__Canon] (FullOpts)
        -128 (-18.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-24.04 % of base) : 2187.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-21.93 % of base) : 634.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -96 (-12.83 % of base) : 3543.dasm - Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:UpdateStates[System.ValueTuple`2[System.__Canon,ubyte]](System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,ubyte],System.__Canon],System.ValueTuple`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:this (FullOpts)

Top method regressions (percentages):
          24 (31.58 % of base) : 6579.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (23.08 % of base) : 5869.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          48 (16.67 % of base) : 7257.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          20 (16.13 % of base) : 5919.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          68 (8.99 % of base) : 6724.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          24 (6.59 % of base) : 3002.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          64 (5.39 % of base) : 4141.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
           4 (3.45 % of base) : 4721.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 9970.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.03 % of base) : 5915.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           4 (1.89 % of base) : 8574.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -24 (-31.58 % of base) : 2227.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 2291.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 6314.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
        -176 (-27.85 % of base) : 3411.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -128 (-27.12 % of base) : 860.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -44 (-26.19 % of base) : 2363.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-26.09 % of base) : 5888.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -72 (-25.71 % of base) : 3270.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
         -72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 3248.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 601.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 481.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
         -52 (-24.07 % of base) : 4338.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
        -100 (-24.04 % of base) : 2187.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -24 (-24.00 % of base) : 2407.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
         -72 (-24.00 % of base) : 12.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 3162.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)


realworld.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: 1692100 (overridden on cmd)
Total bytes of diff: 1674764 (overridden on cmd)
Total bytes of delta: -17336 (-1.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 6297.dasm (12.55 % of base)
          64 : 14835.dasm (5.39 % of base)
          48 : 5948.dasm (10.62 % of base)
          48 : 5959.dasm (10.62 % of base)
          48 : 5969.dasm (10.81 % of base)
          48 : 5972.dasm (10.62 % of base)
          20 : 9004.dasm (13.51 % of base)
          20 : 13455.dasm (6.10 % of base)
          16 : 5896.dasm (8.51 % of base)
           8 : 2148.dasm (4.26 % of base)
           8 : 10734.dasm (5.88 % of base)
           8 : 10462.dasm (3.03 % of base)
           4 : 12013.dasm (5.56 % of base)
           4 : 4786.dasm (0.98 % of base)
           4 : 2383.dasm (1.59 % of base)

Top file improvements (bytes):
        -328 : 3338.dasm (-24.33 % of base)
        -328 : 9657.dasm (-29.29 % of base)
        -228 : 8940.dasm (-28.22 % of base)
        -212 : 729.dasm (-33.12 % of base)
        -212 : 233.dasm (-30.99 % of base)
        -208 : 6132.dasm (-23.01 % of base)
        -208 : 7611.dasm (-23.42 % of base)
        -200 : 5213.dasm (-11.79 % of base)
        -188 : 12514.dasm (-23.86 % of base)
        -184 : 237.dasm (-24.34 % of base)
        -184 : 687.dasm (-26.14 % of base)
        -172 : 5315.dasm (-28.48 % of base)
        -172 : 8323.dasm (-22.63 % of base)
        -172 : 9656.dasm (-18.53 % of base)
        -164 : 5010.dasm (-22.04 % of base)
        -160 : 13372.dasm (-17.62 % of base)
        -152 : 9658.dasm (-14.02 % of base)
        -144 : 9985.dasm (-24.16 % of base)
        -144 : 8487.dasm (-18.09 % of base)
        -144 : 8290.dasm (-20.11 % of base)

70 total files with Code Size differences (55 improved, 15 regressed), 19 unchanged.

Top method regressions (bytes):
         124 (12.55 % of base) : 6297.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          64 (5.39 % of base) : 14835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          48 (10.81 % of base) : 5969.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5972.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5959.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5948.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          20 (13.51 % of base) : 9004.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          20 (6.10 % of base) : 13455.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
          16 (8.51 % of base) : 5896.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
           8 (3.03 % of base) : 10462.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           8 (4.26 % of base) : 2148.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (5.88 % of base) : 10734.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (0.98 % of base) : 4786.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (1.59 % of base) : 2383.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (5.56 % of base) : 12013.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 9657.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -328 (-24.33 % of base) : 3338.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 8940.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 6132.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -208 (-23.42 % of base) : 7611.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
        -200 (-11.79 % of base) : 5213.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -188 (-23.86 % of base) : 12514.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-24.34 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 687.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -172 (-22.63 % of base) : 8323.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -172 (-18.53 % of base) : 9656.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -172 (-28.48 % of base) : 5315.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -164 (-22.04 % of base) : 5010.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -160 (-17.62 % of base) : 13372.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -152 (-14.02 % of base) : 9658.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -144 (-18.09 % of base) : 8487.dasm - FSharp.Compiler.PatternMatchCompilation:chooseSimultaneousEdgeSet[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -144 (-20.11 % of base) : 8290.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -144 (-24.16 % of base) : 9985.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3ToFreshConsTail[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]) (FullOpts)

Top method regressions (percentages):
          20 (13.51 % of base) : 9004.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
         124 (12.55 % of base) : 6297.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (10.81 % of base) : 5969.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5972.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5959.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5948.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          16 (8.51 % of base) : 5896.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          20 (6.10 % of base) : 13455.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
           8 (5.88 % of base) : 10734.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (5.56 % of base) : 12013.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
          64 (5.39 % of base) : 14835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
           8 (4.26 % of base) : 2148.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (3.03 % of base) : 10462.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           4 (1.59 % of base) : 2383.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (0.98 % of base) : 4786.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (percentages):
         -60 (-33.33 % of base) : 8574.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
        -212 (-33.12 % of base) : 729.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 10466.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 10962.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -56 (-30.43 % of base) : 7550.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -100 (-29.41 % of base) : 4804.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
        -100 (-29.41 % of base) : 5053.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -80 (-29.41 % of base) : 5727.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
         -80 (-29.41 % of base) : 9862.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -328 (-29.29 % of base) : 9657.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -172 (-28.48 % of base) : 5315.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -100 (-28.41 % of base) : 9036.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 8940.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -80 (-28.17 % of base) : 4796.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 5311.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 9998.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 4676.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 10459.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 5051.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)



windows arm64

Diffs are based on 80,760 contexts (27,005 MinOpts, 53,755 FullOpts).

MISSED contexts: base: 223 (0.17%), diff: 49,330 (36.80%)

Overall (-99,128 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 931,552 -5,692
benchmarks.run_pgo.windows.arm64.checked.mch 2,407,116 -20,412
benchmarks.run_tiered.windows.arm64.checked.mch 2,106,448 -17,624
coreclr_tests.run.windows.arm64.checked.mch 171,896 -176
libraries.pmi.windows.arm64.checked.mch 1,252,856 -10,348
libraries_tests.run.windows.arm64.Release.mch 615,412 -20,616
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,045,188 -7,168
realworld.run.windows.arm64.checked.mch 1,675,344 -17,092

MinOpts (-40,184 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,882,192 -16,236
benchmarks.run_tiered.windows.arm64.checked.mch 1,874,596 -15,612
libraries_tests.run.windows.arm64.Release.mch 397,116 -8,336

FullOpts (-58,944 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 931,452 -5,692
benchmarks.run_pgo.windows.arm64.checked.mch 524,924 -4,176
benchmarks.run_tiered.windows.arm64.checked.mch 231,852 -2,012
coreclr_tests.run.windows.arm64.checked.mch 171,896 -176
libraries.pmi.windows.arm64.checked.mch 1,252,856 -10,348
libraries_tests.run.windows.arm64.Release.mch 218,296 -12,280
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,045,188 -7,168
realworld.run.windows.arm64.checked.mch 1,675,244 -17,092

Example diffs

benchmarks.run.windows.arm64.checked.mch

-44 (-25.00%) : 4693.dasm - System.Text.Json.JsonSerializer:SerializeSystem.__Canon:System.String (FullOpts)

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01 ] ( 3, 3 ) ref -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T09] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T04] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V08 tmp4 [V08,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V13 rat4 [V13,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> x0 "argument with side effect" +; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 @@ -33,22 +28,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M41289_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41289_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M41289_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] @@ -59,27 +44,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M41289_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M41289_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M41289_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
add x1, fp, #16 // [V01 arg0] mov x2, x20 ; gcrRegs +[x2] @@ -89,14 +59,14 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20] +[x0]
- ;; size=28 bbWeight=1 PerfScore 6.50 -G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=96 bbWeight=1 PerfScore 19.00 +G_M41289_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 176, prolog size 16, PerfScore 41.32, instruction count 44, allocated bytes for code 176 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 26.50, instruction count 33, allocated bytes for code 132 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 1134.dasm - System.Linq.Enumerable:SetCountAndGetSpanSystem.__Canon:System.Span`1System.__Canon

@@ -7,22 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] mov w21, w2 ;; size=32 bbWeight=1 PerfScore 6.00
-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M26687_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M26687_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] mov w2, w21 @@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M26687_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M26687_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M26687_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 17.50 +G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 7336.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerSystem.__Canon:ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)

@@ -7,68 +7,39 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> -; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x21 "spilling helperCall"
+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> x22 "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> x1 single-def "argument with side effect" -; V07 rat0 [V07,T01] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable" -; V08 rat1 [V08,T06] ( 3, 4 ) long -> x22 "runtime lookup" -; V09 rat2 [V09,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V10 rat3 [V10,T04] ( 3, 4.48) long -> x22 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> x19 "argument with side effect" +; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M14728_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ;; size=28 bbWeight=1 PerfScore 5.50
-G_M14728_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x21, [x0, #0x10] - cbz x21, G_M14728_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M14728_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M14728_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x21, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M14728_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M14728_IG08 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x22, [x0, #0x18] - cbz x22, G_M14728_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M14728_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M14728_IG08: ; bbWeight=0.36, 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 - mov x22, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY + mov x19, x0
mov x0, x20 ; gcrRegs +[x0] mov x1, x21 @@ -81,19 +52,19 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x20] mov x1, x0 ; gcrRegs +[x1]
- mov x0, x22
+ mov x0, x19
; gcrRegs -[x0]
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ bl CORINFO_HELP_INITINSTCLASS
; gcrRegs -[x1] +[x0]
- ;; size=44 bbWeight=1 PerfScore 9.00 -G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x40
+ ;; size=92 bbWeight=1 PerfScore 16.00 +G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 39.60, instruction count 45, allocated bytes for code 180 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 26.50, instruction count 34, allocated bytes for code 136 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -112,10 +83,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- E6 save_next - C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] - 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! - E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

+4 (+4.55%) : 8432.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

@@ -32,7 +32,7 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTINTERFACE
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x19 @@ -40,8 +40,9 @@ G_M21263_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
+ ldr wzr, [x0]
ldr x2, [x11]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 5.50
G_M21263_IG04: ; bbWeight=0.50, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -58,7 +59,7 @@ G_M21263_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 16, PerfScore 12.25, instruction count 22, allocated bytes for code 88 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
+; Total bytes of code 92, prolog size 16, PerfScore 13.75, instruction count 23, allocated bytes for code 92 (MethodHash=e2f9acf0) for method System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+5.56%) : 8521.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)

@@ -28,15 +28,16 @@ G_M50435_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTINTERFACE
+ bl CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32 mov x1, xzr
+ ldr wzr, [x0]
ldr x2, [x11]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
+ ;; size=44 bbWeight=0.50 PerfScore 5.50
G_M50435_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 br x2 @@ -51,7 +52,7 @@ G_M50435_IG06: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 72, prolog size 8, PerfScore 8.75, instruction count 18, allocated bytes for code 72 (MethodHash=b1213afc) for method System.Convert:ToInt32(System.Object):int (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 10.25, instruction count 19, allocated bytes for code 76 (MethodHash=b1213afc) for method System.Convert:ToInt32(System.Object):int (FullOpts)
; ============================================================ Unwind Info: @@ -62,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.25%) : 996.dasm - System.Linq.Enumerable:gEnumerableToArray|296_0[System.ValueTuple`2[System.Canon,System.Canon]](System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,System.Canon]]):System.ValueTuple`2[System.Canon,System.__Canon]

@@ -8,33 +8,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (128) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]]> ; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd exact single-def <System.ValueTuple`2[System.__Canon,System.__Canon][]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]> ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]]>
-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP -; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP +; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect" -; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect" -; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup" -; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect" +; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect" +; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 408 @@ -60,23 +53,20 @@ G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=76 bbWeight=1 PerfScore 15.00
-G_M13440_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M13440_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M13440_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M13440_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M13440_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY
add x1, fp, #0xD1FFAB1E // [V02 loc0]
+ mov x0, x21
mov w2, #8 movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon]](byref,int):System.Span`1[System.ValueTuple`2[System.__Canon,System.__Canon]] movk x3, #0xD1FFAB1E LSL #16 @@ -88,29 +78,13 @@ G_M13440_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0] str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8] str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]
- ldr x0, [x19, #0x38] - ; byrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M13440_IG08 - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M13440_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x0, #0x18] - cbz x21, G_M13440_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M13440_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M13440_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M13440_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x21, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x1, x21
+ bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] mov x2, x20 ; gcrRegs +[x2] @@ -120,7 +94,12 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20]
- mov x1, x21
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:ToArray():System.ValueTuple`2[System.__Canon,System.__Canon][]:this movk x2, #0xD1FFAB1E LSL #16 @@ -128,27 +107,32 @@ G_M13440_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- mov x19, x0 - ; gcrRegs +[x19] - mov x1, x21 - add x0, fp, #24 // [V03 loc1]
+ mov x20, x0 + ; gcrRegs +[x20] + mov x0, x19
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:Dispose():this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=96 bbWeight=1 PerfScore 21.00 -G_M13440_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=248 bbWeight=1 PerfScore 47.50 +G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xD1FFAB1E] ldp x19, x20, [sp, #0xD1FFAB1E] ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=1d88cb7f) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
; ============================================================ Unwind Info: @@ -159,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.windows.arm64.checked.mch

-36 (-31.03%) : 13426.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 4691.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 13592.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Instrumented Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Instrumented Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+6.06%) : 14856.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 2.57) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.69) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.57) byref -> x19 single-def
+; V00 this [V00,T04] ( 3, 2.57) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4.14) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.57) byref -> x20 single-def
; V03 loc0 [V03,T02] ( 7, 5.29) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 4, 4.57) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T03] ( 4, 4.57) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 2.29) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 3.20) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.57, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.57 PerfScore 4.00 -G_M58319_IG04: ; bbWeight=0.46, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.46 PerfScore 0.46 -G_M58319_IG05: ; bbWeight=0.11, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.11 PerfScore 0.34 -G_M58319_IG06: ; bbWeight=0.57, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.57 PerfScore 4.00 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.57 PerfScore 7.43 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 23.30, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 21.43, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+8 (+6.06%) : 16168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.19) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.23) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.19) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.39) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.78) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.56) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.56) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.78) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.09) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.19, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.19 PerfScore 1.36 -G_M58319_IG04: ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.16 PerfScore 0.16 -G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.04 PerfScore 0.12 -G_M58319_IG06: ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.19 PerfScore 1.36 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.19 PerfScore 2.53 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 17.49, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 16.53, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+8 (+6.06%) : 16644.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,84 +9,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.17) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.20) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.17) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.17) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.34) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.17) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.68) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.36) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.36) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.68) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 0.95) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.17 PerfScore 1.19 -G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.14 PerfScore 0.14 -G_M58319_IG05: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.03 PerfScore 0.10 -G_M58319_IG06: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.17 PerfScore 1.19 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.17 PerfScore 2.21 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 17.11, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 16.21, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -105,9 +99,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

benchmarks.run_tiered.windows.arm64.checked.mch

-36 (-31.03%) : 9034.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -17,28 +17,13 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M34046_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x18] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M34046_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] mov x1, xzr mov w2, wzr @@ -48,13 +33,13 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs +[x0]
- ;; size=32 bbWeight=1 PerfScore 8.50 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 14.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 32.10, instruction count 29, allocated bytes for code 116 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 19.50, instruction count 20, allocated bytes for code 80 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info: @@ -65,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 15160.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttributeSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M53804_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x20] // [V00 TypeCtx] str x1, [fp, #0x18] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M53804_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M53804_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x10] // [V03 tmp1] - b G_M53804_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M53804_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53804_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x10] // [V03 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -50,13 +35,13 @@ G_M53804_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M53804_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M53804_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 12, PerfScore 34.10, instruction count 29, allocated bytes for code 116 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=26592dd3) for method Newtonsoft.Json.Serialization.JsonTypeReflector:GetCachedAttribute[System.__Canon](System.Object):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -67,7 +52,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 694.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 17584.dasm - Sigil.Impl.TypeOnStack+TypeCache:Get(System.Type):Sigil.Impl.TypeOnStack (Tier0)

@@ -35,9 +35,11 @@ G_M31041_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -61,9 +63,11 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -85,7 +89,7 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x28] // [V06 tmp1] @@ -117,9 +121,11 @@ G_M31041_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0]

+8 (+6.06%) : 1012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -8,84 +8,78 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 2.50) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x19 single-def
+; V00 this [V00,T03] ( 3, 2.50) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.50) byref -> x20 single-def
; V03 loc0 [V03,T02] ( 7, 5 ) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 2 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 2.80) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x40]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30]
mov fp, sp
- str x1, [fp, #0x10] - mov x20, x0 - ; gcrRegs +[x20] - mov x19, x2 - ; byrRegs +[x19] - ;; size=28 bbWeight=1 PerfScore 5.50 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x19]
+ str x1, [fp, #0x18] + mov x21, x0 + ; gcrRegs +[x21] + mov x19, x1 + mov x20, x2 + ; byrRegs +[x20] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [x20]
; gcrRegs +[x0]
- cbnz x0, G_M58319_IG07
+ cbnz x0, G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
- ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M58319_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.40 PerfScore 0.40 -G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.10 PerfScore 0.30 -G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- mov x21, x0 - ; gcrRegs +[x21] - add x14, x21, #16
+ mov x22, x0 + ; gcrRegs +[x22] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x20]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14] mov x0, x19
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x20
; byrRegs +[x0]
- mov x1, x21
+ mov x1, x22
; gcrRegs +[x1] mov x2, xzr bl <unknown method> ; gcrRegs -[x1] +[x0]
- ; byrRegs -[x0 x19]
+ ; byrRegs -[x0 x20]
cmp x0, #0
- csel x0, x0, x21, ne - ;; size=44 bbWeight=0.50 PerfScore 3.50 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x21] - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ csel x0, x0, x22, ne + ;; size=84 bbWeight=0.50 PerfScore 6.50 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x22] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 140, prolog size 20, PerfScore 20.50, instruction count 35, allocated bytes for code 140 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -96,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 33 (0x00021) Actual length = 132 (0x000084)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -104,9 +98,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ E6 save_next + C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32] + 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]! + E4 end
E4 end E4 end

+20 (+6.25%) : 15297.dasm - System.Linq.Enumerable:gEnumerableToArray|296_0System.__Canon:System.Canon

@@ -8,33 +8,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> x19 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [fp+0x120] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon]> ; V03 loc1 [V03 ] ( 7, 7 ) struct (264) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]>
-; V04 loc2 [V04,T14] ( 2, 2 ) ref -> x19 class-hnd single-def <System.__Canon[]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> x20 class-hnd single-def <System.__Canon[]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp1 [V06,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V10 tmp5 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <System.Span`1[System.__Canon]>
-; V13 tmp8 [V13,T12] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP -; V14 tmp9 [V14,T13] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP +; V14 tmp9 [V14,T07] ( 3, 3 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
-; V17 tmp12 [V17,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V18 tmp13 [V18,T09] ( 2, 4 ) long -> x1 "argument with side effect" -; V19 tmp14 [V19,T10] ( 2, 4 ) long -> x1 "argument with side effect" -; V20 tmp15 [V20,T11] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 cse0 [V21,T05] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V22 rat0 [V22,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T07] ( 3, 4 ) long -> x21 "runtime lookup" -; V25 rat3 [V25,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T04] ( 3, 4.48) long -> x21 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> x1 "argument with side effect" +; V18 tmp13 [V18,T04] ( 2, 4 ) long -> x1 "argument with side effect" +; V19 tmp14 [V19,T05] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 344 @@ -60,23 +53,20 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=76 bbWeight=1 PerfScore 15.00
-G_M19942_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M19942_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M19942_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M19942_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M19942_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY
add x1, fp, #0xD1FFAB1E // [V02 loc0]
+ mov x0, x21
mov w2, #8 movz x3, #0xD1FFAB1E // code for <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -88,29 +78,13 @@ G_M19942_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0xf0] str x0, [fp, #0xD1FFAB1E] // [V03 loc1+0xf8] str w1, [fp, #0xD1FFAB1E] // [V03 loc1+0x100]
- ldr x0, [x19, #0x38] - ; byrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M19942_IG08 - ;; size=60 bbWeight=1 PerfScore 18.00 -G_M19942_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x21, [x0, #0x18] - cbz x21, G_M19942_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M19942_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M19942_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M19942_IG08: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; byrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x21, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x1, x21
+ bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] mov x2, x20 ; gcrRegs +[x2] @@ -120,7 +94,12 @@ G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x2 x20]
- mov x1, x21
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0
add x0, fp, #24 // [V03 loc1] movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this movk x2, #0xD1FFAB1E LSL #16 @@ -128,27 +107,32 @@ G_M19942_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- mov x19, x0 - ; gcrRegs +[x19] - mov x1, x21 - add x0, fp, #24 // [V03 loc1]
+ mov x20, x0 + ; gcrRegs +[x20] + mov x0, x19
; gcrRegs -[x0]
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #24 // [V03 loc1]
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ;; size=96 bbWeight=1 PerfScore 21.00 -G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=248 bbWeight=1 PerfScore 47.50 +G_M19942_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xD1FFAB1E] ldp x19, x20, [sp, #0xD1FFAB1E] ldp fp, lr, [sp], #0xD1FFAB1E ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 320, prolog size 68, PerfScore 72.50, instruction count 80, allocated bytes for code 320 (MethodHash=008eb219) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
+; Total bytes of code 340, prolog size 68, PerfScore 67.50, instruction count 85, allocated bytes for code 340 (MethodHash=008eb219) for method System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
; ============================================================ Unwind Info: @@ -159,7 +143,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.windows.arm64.checked.mch

-44 (-24.44%) : 20430.dasm - Microsoft.FSharp.Core.PrintfImpl+Specializations3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory4System.Canon,System.Canon,System.Canon,System.Canon

@@ -8,18 +8,13 @@ ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 7, 5.56) long -> x19 single-def -; V01 arg0 [V01,T05] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.PrintfImpl+Step[]>
+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def +; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.PrintfImpl+Step[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+CaptureFinal1@437[System.__Canon,System.__Canon,System.__Canon,double]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]> ;* V06 tmp4 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 rat0 [V07,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T03] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat3 [V10,T04] ( 3, 5.60) long -> x0 "spilling expr" -; V11 rat4 [V11,T06] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -33,13 +28,13 @@ G_M28402_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x1 ; gcrRegs +[x20] ;; size=28 bbWeight=1 PerfScore 5.50
-G_M28402_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M28402_IG08 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M28402_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - bl CORINFO_HELP_NEWSFAST
+G_M28402_IG02: ; bbWeight=1, 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_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x21, x0 ; gcrRegs +[x21] @@ -50,17 +45,12 @@ G_M28402_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15 x20] ; byrRegs -[x14]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M28402_IG07 - ;; size=36 bbWeight=1 PerfScore 11.00 -G_M28402_IG04: ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M28402_IG07 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M28402_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -73,33 +63,15 @@ G_M28402_IG05: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 str x1, [x0, #0x18]
- ;; size=32 bbWeight=1 PerfScore 5.50 -G_M28402_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 15.00 +G_M28402_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M28402_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x21] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M28402_IG05 - ;; size=24 bbWeight=0.36 PerfScore 1.44 -G_M28402_IG08: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] +[x20] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M28402_IG03 - ;; size=24 bbWeight=0.20 PerfScore 0.80
-; Total bytes of code 180, prolog size 20, PerfScore 39.44, instruction count 45, allocated bytes for code 180 (MethodHash=b97d910d) for method Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 25.50, instruction count 34, allocated bytes for code 136 (MethodHash=b97d910d) for method Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -110,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-20.69%) : 20442.dasm - Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnvSystem.__Canon:Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3System.Canon,System.Canon,System.__Canon

@@ -8,15 +8,13 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> -; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.IO.TextWriter>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> +; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.IO.TextWriter>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfImpl+TextWriterPrintfEnv@1081[System.__Canon]> ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp3 [V06,T06] ( 2, 4 ) ref -> x15 class-hnd single-def "Inlining Arg" <System.IO.TextWriter> -; V07 rat0 [V07,T05] ( 3, 4 ) long -> x1 "runtime lookup" -; V08 rat1 [V08,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V06 tmp3 [V06,T04] ( 2, 4 ) ref -> x15 class-hnd single-def "Inlining Arg" <System.IO.TextWriter>
; ; Lcl frame size = 16 @@ -30,24 +28,12 @@ G_M17579_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M17579_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M17579_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M17579_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M17579_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M17579_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17579_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M17579_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #16 ; byrRegs +[x14] @@ -70,14 +56,14 @@ G_M17579_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- ;; size=44 bbWeight=1 PerfScore 10.00 -G_M17579_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 12.00 +G_M17579_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.90, instruction count 29, allocated bytes for code 116 (MethodHash=ab80bb54) for method Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 92, prolog size 16, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=ab80bb54) for method Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +74,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-12.50%) : 20434.dasm - Microsoft.FSharp.Core.FSharpFunc2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc2[System.Canon,System.Canon],System.Canon,double):System.Canon (FullOpts)

@@ -7,18 +7,16 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T01] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> -; V02 arg1 [V02,T03] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T08] ( 4, 3 ) double -> [fp+0x10] single-def -; V04 loc0 [V04,T06] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> +; V02 arg1 [V02,T02] ( 4, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T06] ( 4, 3 ) double -> [fp+0x10] single-def +; V04 loc0 [V04,T04] ( 4, 3 ) ref -> x0 class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp2 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> x0 single-def "argument with side effect" -; V10 rat0 [V10,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V11 rat1 [V11,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp2 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V09 tmp3 [V09,T05] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; ; Lcl frame size = 16 @@ -34,30 +32,19 @@ G_M51117_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs +[x20] ;; size=28 bbWeight=1 PerfScore 5.50 G_M51117_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M51117_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M51117_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M51117_IG05 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M51117_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M51117_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFCLASS
+ bl CORINFO_HELP_ISINSTANCEOFARRAY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M51117_IG08 - ;; size=12 bbWeight=1 PerfScore 2.50 -G_M51117_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ cbz x0, G_M51117_IG05 + ;; size=28 bbWeight=1 PerfScore 5.00 +G_M51117_IG03: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x1, x20 ; gcrRegs +[x1] @@ -66,13 +53,13 @@ G_M51117_IG06: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 ldr x2, [x2, #0x48] ldr x2, [x2, #0x28] ;; size=20 bbWeight=0.50 PerfScore 5.75
-G_M51117_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M51117_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M51117_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M51117_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -89,14 +76,14 @@ G_M51117_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ldr x1, [x1, #0x48] ldr x1, [x1, #0x20] ;; size=40 bbWeight=0.50 PerfScore 11.00
-G_M51117_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M51117_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 160, prolog size 28, PerfScore 36.45, instruction count 40, allocated bytes for code 160 (MethodHash=5ec73852) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
+; Total bytes of code 140, prolog size 28, PerfScore 30.25, instruction count 35, allocated bytes for code 140 (MethodHash=5ec73852) for method Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +94,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-12.20%) : 20158.dasm - Program:GenName2ForwardBothSystem.Canon,System.Canon:System.String (FullOpts)

@@ -7,17 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
; V03 loc0 [V03 ] ( 1, 1 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <S32> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V06 tmp2 [V06 ] ( 2, 2 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher" ; V07 ReturnAddress[V07 ] ( 1, 1 ) long -> [fp+0x08] do-not-enreg[X] addr-exposed "Return address"
-; V08 tmp4 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T03] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 48 @@ -35,22 +33,11 @@ G_M57764_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=40 bbWeight=1 PerfScore 7.50
-G_M57764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x18] - cbz x2, G_M57764_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M57764_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M57764_IG05 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M57764_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M57764_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=16 bbWeight=0.20 PerfScore 0.50 -G_M57764_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
movz x4, #0xD1FFAB1E // code for <unknown method> movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 @@ -74,14 +61,14 @@ G_M57764_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ldr x0, [fp, #0x10] // [V06 tmp2] ; gcrRegs +[x0]
- ;; size=76 bbWeight=1 PerfScore 17.00 -G_M57764_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 19.50 +G_M57764_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x40] ldp fp, lr, [sp], #0x50 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 164, prolog size 32, PerfScore 36.20, instruction count 41, allocated bytes for code 164 (MethodHash=ec501e5b) for method Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)
+; Total bytes of code 144, prolog size 32, PerfScore 30.00, instruction count 36, allocated bytes for code 144 (MethodHash=ec501e5b) for method Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +79,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-48 (-9.84%) : 503.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (FullOpts)

@@ -7,26 +7,21 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T06] ( 7, 4.88) long -> x20 single-def -; V01 arg0 [V01,T07] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> x20 single-def +; V01 arg0 [V01,T06] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-; V03 arg2 [V03,T08] ( 4, 4 ) byref -> x22 single-def
+; V03 arg2 [V03,T07] ( 4, 4 ) byref -> x22 single-def
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x20 class-hnd <System.__Canon> -; V06 loc2 [V06,T14] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> x23 class-hnd <System.__Canon> +; V06 loc2 [V06,T09] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T09] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T08] ( 3, 6 ) long -> x11 "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V12 tmp4 [V12,T00] ( 3, 48 ) long -> x11 "VirtualCall with runtime lookup"
-; V13 PSPSym [V13,T15] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" -; V14 cse0 [V14,T05] ( 2, 8.50) long -> x23 hoist "CSE - aggressive" -; V15 cse1 [V15,T04] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive" -; V16 rat0 [V16,T10] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" -; V17 rat1 [V17,T13] ( 3, 2 ) long -> x23 "runtime lookup" -; V18 rat2 [V18,T11] ( 3, 2.80) long -> x0 "spilling expr" -; V19 rat3 [V19,T12] ( 3, 2.24) long -> x23 "fgMakeTemp is creating a new local variable"
+; V13 PSPSym [V13,T10] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym" +; V14 cse0 [V14,T05] ( 6, 13 ) long -> x21 multi-def "CSE - aggressive"
; ; Lcl frame size = 40 @@ -47,27 +42,17 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x22, x3 ; byrRegs +[x22] ;; size=48 bbWeight=1 PerfScore 9.00
-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; GC ptr vars +{V06 V14} - cbz x21, G_M62024_IG21 - cbz x19, G_M62024_IG22 - ldr x0, [x20, #0x38] - ldr x11, [x0, #0x10] - cbz x11, G_M62024_IG04 - ;; size=20 bbWeight=1 PerfScore 9.00 -G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref - b G_M62024_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; GC ptr vars +{V06} + cbz x21, G_M62024_IG14 + cbz x19, G_M62024_IG15
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov x11, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, byref
mov x0, x21 ; gcrRegs +[x0] ldr x1, [x11] @@ -76,9 +61,8 @@ G_M62024_IG05: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 ; gcr arg pop 0 str x0, [fp, #0x20] // [V04 loc0] ; GC ptr vars +{V04}
- ;; size=16 bbWeight=1 PerfScore 5.50 -G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; GC ptr vars -{V14}
+ ;; size=48 bbWeight=1 PerfScore 11.00 +G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
movz x21, #24 movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 @@ -87,69 +71,53 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- cbz w0, G_M62024_IG14
+ cbz w0, G_M62024_IG07
;; size=28 bbWeight=1 PerfScore 7.00
-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ldr x0, [x20, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M62024_IG10 - ;; size=16 bbWeight=0.50 PerfScore 3.75 -G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - ldr x23, [x0, #0x18] - cbz x23, G_M62024_IG10 - ;; size=8 bbWeight=0.40 PerfScore 1.60 -G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref - b G_M62024_IG11 - ;; size=4 bbWeight=0.32 PerfScore 0.32 -G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+G_M62024_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x23, x0 - ;; size=24 bbWeight=0.18 PerfScore 0.63 -G_M62024_IG11: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz - mov x11, x23
+ mov x11, x0
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] ldr x1, [x11] blr x1 ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - mov x1, x20
+ mov x23, x0 + ; gcrRegs +[x23] + mov x1, x23
; gcrRegs +[x1] ldr x0, [x19, #0x08] ldr x2, [x19, #0x18] blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- cbnz w0, G_M62024_IG13
+ cbnz w0, G_M62024_IG06
ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] mov x11, x21 ldr x1, [x11] blr x1
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x23]
; gcr arg pop 0
- cbnz w0, G_M62024_IG11 - ;; size=60 bbWeight=8 PerfScore 184.00 -G_M62024_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ cbnz w0, G_M62024_IG04 + ;; size=80 bbWeight=8 PerfScore 208.00 +G_M62024_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG14
+ b G_M62024_IG07
;; size=4 bbWeight=1 PerfScore 1.00
-G_M62024_IG13: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref - ; gcrRegs +[x20]
+G_M62024_IG06: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref + ; gcrRegs +[x23]
mov w0, #1 strb w0, [x22]
- str x20, [fp, #0x18] // [V06 loc2] - b G_M62024_IG15
+ str x23, [fp, #0x18] // [V06 loc2] + b G_M62024_IG08
;; size=16 bbWeight=1 PerfScore 3.50
-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref - ; gcrRegs -[x20]
+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref + ; gcrRegs -[x23]
; GC ptr vars -{V06} ldr x0, [fp, #0x20] // [V04 loc0] ; gcrRegs +[x0] @@ -159,44 +127,44 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- b G_M62024_IG19
+ b G_M62024_IG12
;; size=20 bbWeight=1 PerfScore 7.50
-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22]
- ; GC ptr vars +{V02 V04 V06 V14}
+ ; GC ptr vars +{V02 V04 V06}
ldr x0, [fp, #0x30] // [V13 PSPSym]
- bl G_M62024_IG23
+ bl G_M62024_IG16
;; size=8 bbWeight=1 PerfScore 3.00
-G_M62024_IG16: ; bbWeight=1, nogc, extend
+G_M62024_IG09: ; bbWeight=1, nogc, extend
nop ;; size=4 bbWeight=1 PerfScore 0.50
-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02 V04 V14}
+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000200 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V02 V04}
ldr x0, [fp, #0x18] // [V06 loc2] ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 2.00
-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x0] ; byrRegs +[x22] ; GC ptr vars -{V06} strb wzr, [x22] mov x0, xzr ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x58] ldp x21, x22, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x60 ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x22] mov w0, #17 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) @@ -207,7 +175,7 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12 movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int) movk x1, #0xD1FFAB1E LSL #16 @@ -217,8 +185,8 @@ G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V04 V06 V14}
+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000204 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V04 V06}
stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x18] stp x21, x22, [sp, #0x28] @@ -226,21 +194,21 @@ G_M62024_IG23: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs add x3, fp, #96 str x3, [sp, #0x10] ;; size=24 bbWeight=1 PerfScore 5.50
-G_M62024_IG24: ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
...

-20 (-9.26%) : 20178.dasm - GenInstance`2[System.__Canon,int]:NonVirtForwardSystem.Canon,System.Canon:System.String:this (FullOpts)

@@ -7,20 +7,18 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <GenInstance`2[System.__Canon,int]> -; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T06] ( 3, 3 ) int -> x23 single-def -; V04 arg3 [V04,T04] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> -; V05 arg4 [V05,T05] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
+; V00 this [V00,T00] ( 4, 4 ) ref -> x19 this class-hnd single-def <GenInstance`2[System.__Canon,int]> +; V01 TypeCtx [V01,T01] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T05] ( 3, 3 ) int -> x23 single-def +; V04 arg3 [V04,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.__Canon> +; V05 arg4 [V05,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <System.__Canon>
; V06 loc0 [V06 ] ( 1, 1 ) struct (32) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <S32> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V09 tmp2 [V09 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher" ; V10 ReturnAddress[V10 ] ( 1, 1 ) long -> [fp+0x08] do-not-enreg[X] addr-exposed "Return address"
-; V11 tmp4 [V11,T08] ( 2, 4 ) long -> x1 "argument with side effect" -; V12 rat0 [V12,T07] ( 3, 4 ) long -> x1 "runtime lookup" -; V13 rat1 [V13,T02] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp4 [V11,T06] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 56 @@ -45,25 +43,14 @@ G_M32303_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x22, x5 ; gcrRegs +[x22] ;; size=60 bbWeight=1 PerfScore 11.00
-G_M32303_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M32303_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
ldrsb wzr, [x19]
- ldr x0, [x1, #0x38] - ldr x2, [x0, #0x18] - cbz x2, G_M32303_IG04 - ;; size=16 bbWeight=1 PerfScore 10.00 -G_M32303_IG03: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref - mov x1, x2 - b G_M32303_IG05 - ;; size=8 bbWeight=0.80 PerfScore 1.20 -G_M32303_IG04: ; bbWeight=0.20, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x1 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M32303_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x7, #0xD1FFAB1E // code for <unknown method> movk x7, #0xD1FFAB1E LSL #16 movk x7, #0xD1FFAB1E LSL #32 @@ -92,8 +79,8 @@ G_M32303_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg blr x3 ldr x0, [fp, #0x18] // [V09 tmp2] ; gcrRegs +[x0]
- ;; size=88 bbWeight=1 PerfScore 18.50 -G_M32303_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=116 bbWeight=1 PerfScore 25.00 +G_M32303_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x68] ldp x21, x22, [sp, #0x58] ldp x19, x20, [sp, #0x48] @@ -101,7 +88,7 @@ G_M32303_IG06: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 216, prolog size 40, PerfScore 47.40, instruction count 54, allocated bytes for code 216 (MethodHash=bb6581d0) for method GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)
+; Total bytes of code 196, prolog size 40, PerfScore 42.00, instruction count 49, allocated bytes for code 196 (MethodHash=bb6581d0) for method GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -112,7 +99,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.windows.arm64.checked.mch

-44 (-30.56%) : 16406.dasm - Microsoft.FSharp.Control.TaskBuilderBase:ZeroSystem.__Canon:Microsoft.FSharp.Core.CompilerServices.ResumableCode2[Microsoft.FSharp.Control.TaskStateMachineData1[System.Canon],System.Canon]:this (FullOpts)

@@ -8,15 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.FSharp.Control.TaskBuilderBase>
-; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 3, 4 ) long -> x20 "spilling helperCall"
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x20 "spilling helperCall"
; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]> ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 rat0 [V06,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V07 rat1 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat2 [V08,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V09 rat3 [V09,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -27,44 +23,19 @@ G_M46011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x1, [fp, #0x18] mov x19, x1 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M46011_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x20, [x0, #0x10] - cbz x20, G_M46011_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M46011_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M46011_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M46011_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M46011_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x20, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M46011_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M46011_IG08 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M46011_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M46011_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M46011_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M46011_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M46011_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M46011_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -74,14 +45,14 @@ G_M46011_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 4.00 -G_M46011_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=68 bbWeight=1 PerfScore 10.50 +G_M46011_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=e0324c44) for method Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts)
+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=e0324c44) for method Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +63,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-30.56%) : 20362.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:YieldSystem.__Canon:Microsoft.FSharp.Core.CompilerServices.ResumableCode`2System.Canon,System.Canon

@@ -7,15 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> x20 "spilling helperCall"
+; V02 tmp1 [V02,T02] ( 2, 4 ) long -> x20 "spilling helperCall"
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon]> ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V06 rat1 [V06,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V07 rat2 [V07,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V08 rat3 [V08,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -26,44 +22,19 @@ G_M5502_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x18] mov x19, x0 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M5502_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x20, [x0, #0x10] - cbz x20, G_M5502_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M5502_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M5502_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M5502_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5502_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x20, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M5502_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M5502_IG08 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M5502_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M5502_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M5502_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M5502_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M5502_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M5502_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -73,14 +44,14 @@ G_M5502_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 4.00 -G_M5502_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=68 bbWeight=1 PerfScore 10.50 +G_M5502_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=903fea81) for method Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=903fea81) for method Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-30.56%) : 23714.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2System.__Canon:System.Func`2System.Canon,System.Canon

@@ -7,15 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> x20 "spilling helperCall"
+; V02 tmp1 [V02,T02] ( 2, 4 ) long -> x20 "spilling helperCall"
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.__Canon,System.__Canon]> ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T02] ( 3, 5.60) long -> x20 "fgMakeTemp is creating a new local variable" -; V06 rat1 [V06,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V07 rat2 [V07,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V08 rat3 [V08,T04] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -26,44 +22,19 @@ G_M59286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x18] mov x19, x0 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M59286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x20, [x0, #0x10] - cbz x20, G_M59286_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M59286_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M59286_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M59286_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59286_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x20, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M59286_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M59286_IG08 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M59286_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M59286_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M59286_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M59286_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M59286_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M59286_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -73,14 +44,14 @@ G_M59286_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov x0, x19 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 4.00 -G_M59286_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=68 bbWeight=1 PerfScore 10.50 +G_M59286_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 144, prolog size 16, PerfScore 31.92, instruction count 36, allocated bytes for code 144 (MethodHash=cdc61869) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
+; Total bytes of code 100, prolog size 16, PerfScore 17.50, instruction count 25, allocated bytes for code 100 (MethodHash=cdc61869) for method Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +62,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 36 (0x00024) Actual length = 144 (0x000090)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.02%) : 11585.dasm - System.Runtime.InteropServices.Marshal:CopyToNativeSystem.__Canon (FullOpts)

@@ -8,44 +8,41 @@ ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 6, 6 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.__Canon[]>
-; V02 arg1 [V02,T05] ( 3, 3 ) int -> x23 single-def
+; V02 arg1 [V02,T04] ( 3, 3 ) int -> x23 single-def
; V03 arg2 [V03,T02] ( 4, 4 ) long -> x21 single-def ; V04 arg3 [V04,T03] ( 4, 4 ) int -> x22 single-def
-; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [fp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]>
+; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[System.__Canon]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 3, 6 ) struct (16) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
+; V07 tmp1 [V07 ] ( 3, 6 ) struct (16) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 tmp3 [V09 ] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
+; V09 tmp3 [V09 ] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp6 [V12 ] ( 2, 2 ) byref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05._reference (fldOffset=0x0)" P-DEP -; V13 tmp7 [V13 ] ( 2, 2 ) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP -; V14 tmp8 [V14 ] ( 3, 6 ) byref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP -; V15 tmp9 [V15 ] ( 3, 6 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP -; V16 tmp10 [V16 ] ( 3, 5 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP -; V17 tmp11 [V17 ] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x8)" P-DEP -; V18 tmp12 [V18,T08] ( 2, 4 ) long -> x1 "argument with side effect" -; V19 tmp13 [V19,T09] ( 2, 4 ) long -> x1 "argument with side effect" -; V20 tmp14 [V20,T10] ( 2, 4 ) long -> x1 "argument with side effect" -; V21 cse0 [V21,T06] ( 4, 4 ) long -> x24 "CSE - aggressive" -; V22 rat0 [V22,T07] ( 3, 4 ) long -> x24 "runtime lookup" -; V23 rat1 [V23,T04] ( 3, 5.60) long -> x24 "fgMakeTemp is creating a new local variable"
+; V12 tmp6 [V12 ] ( 2, 2 ) byref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V05._reference (fldOffset=0x0)" P-DEP +; V13 tmp7 [V13 ] ( 2, 2 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V05._length (fldOffset=0x8)" P-DEP +; V14 tmp8 [V14 ] ( 3, 6 ) byref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._reference (fldOffset=0x0)" P-DEP +; V15 tmp9 [V15 ] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP +; V16 tmp10 [V16 ] ( 3, 5 ) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP +; V17 tmp11 [V17 ] ( 3, 5 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x8)" P-DEP +; V18 tmp12 [V18,T05] ( 2, 4 ) long -> x1 "argument with side effect" +; V19 tmp13 [V19,T06] ( 2, 4 ) long -> x1 "argument with side effect" +; V20 tmp14 [V20,T07] ( 2, 4 ) long -> x1 "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 56
G_M63986_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]! - stp x19, x20, [sp, #0x50] - stp x21, x22, [sp, #0x60] - stp x23, x24, [sp, #0x70]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x48] + stp x21, x22, [sp, #0x58] + str x23, [sp, #0x68]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp xzr, xzr, [x9, #0x20]
- str x0, [fp, #0x48]
+ str x0, [fp, #0x40]
mov x19, x0 mov x20, x1 ; gcrRegs +[x20] @@ -65,15 +62,15 @@ G_M63986_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x2, [x2] blr x2 ; gcrRegs -[x0]
- cbz x21, G_M63986_IG08 - stp xzr, xzr, [fp, #0x28] - ldr x0, [x19, #0x38] - ldr x24, [x0, #0x10] - cbz x24, G_M63986_IG07 - ;; size=56 bbWeight=1 PerfScore 16.50 -G_M63986_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x1, x24 - add x0, fp, #40 // [V07 tmp1]
+ cbz x21, G_M63986_IG06 + stp xzr, xzr, [fp, #0x20] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #32 // [V07 tmp1]
mov x2, x20 ; gcrRegs +[x2] mov w3, w23 @@ -84,15 +81,20 @@ G_M63986_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x5, [x5] blr x5 ; gcrRegs -[x2 x20]
- ;; size=40 bbWeight=1 PerfScore 8.00 -G_M63986_IG04: ; bbWeight=1, nogc, extend - ldp x0, x1, [fp, #0x28] - stp x0, x1, [fp, #0x38]
+ ;; size=104 bbWeight=1 PerfScore 20.50 +G_M63986_IG03: ; bbWeight=1, nogc, extend + ldp x0, x1, [fp, #0x20] + stp x0, x1, [fp, #0x30]
;; size=8 bbWeight=1 PerfScore 4.00
-G_M63986_IG05: ; bbWeight=1, extend - stp xzr, xzr, [fp, #0x18] - mov x1, x24 - add x0, fp, #24 // [V09 tmp3]
+G_M63986_IG04: ; bbWeight=1, extend + stp xzr, xzr, [fp, #0x10] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + add x0, fp, #16 // [V09 tmp3]
mov x2, x21 mov w3, w22 movz x4, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:.ctor(ulong,int):this @@ -100,42 +102,36 @@ G_M63986_IG05: ; bbWeight=1, extend movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4
- mov x1, x24 - ldr x2, [fp, #0x18] // [V16 tmp10]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x0 + ldr x2, [fp, #0x10] // [V16 tmp10]
; byrRegs +[x2]
- ldr w3, [fp, #0x20] // [V17 tmp11] - add x0, fp, #56 // [V05 loc0]
+ ldr w3, [fp, #0x18] // [V17 tmp11] + add x0, fp, #48 // [V05 loc0]
movz x4, #0xD1FFAB1E // code for System.Span`1[System.__Canon]:CopyTo(System.Span`1[System.__Canon]):this movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4] blr x4 ; byrRegs -[x2]
- ;; size=76 bbWeight=1 PerfScore 19.00 -G_M63986_IG06: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x70] - ldp x21, x22, [sp, #0x60] - ldp x19, x20, [sp, #0x50] - ldp fp, lr, [sp], #0x80
+ ;; size=116 bbWeight=1 PerfScore 25.00 +G_M63986_IG05: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x68] + ldp x21, x22, [sp, #0x58] + ldp x19, x20, [sp, #0x48] + ldp fp, lr, [sp], #0x70
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M63986_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x20] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x24, x0 - b G_M63986_IG03 - ;; size=28 bbWeight=0.20 PerfScore 0.90 -G_M63986_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M63986_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #0xD1FFAB1E movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_STRCNS
+ bl CORINFO_HELP_NEWARR_1_ALIGN8
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String) movk x1, #0xD1FFAB1E LSL #16 @@ -146,7 +142,7 @@ G_M63986_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 332, prolog size 40, PerfScore 64.40, instruction count 83, allocated bytes for code 332 (MethodHash=7e6c060d) for method System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
+; Total bytes of code 352, prolog size 40, PerfScore 66.50, instruction count 88, allocated bytes for code 352 (MethodHash=7e6c060d) for method System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
; ============================================================ Unwind Info: @@ -157,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -165,10 +161,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ D1 0D save_reg X#4 Z#13 (0x0D); str x23, [sp, #104]
E6 save_next
- E6 save_next - C8 0A save_regp X#0 Z#10 (0x0A); stp x19, x20, [sp, #80] - 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! - E4 end
+ C8 09 save_regp X#0 Z#9 (0x09); stp x19, x20, [sp, #72] + 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end

+12 (+8.11%) : 754.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> x19 class-hnd single-def <System.Object>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x20 single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref single-def ;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref single-def ;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 tmp5 [V07,T04] ( 2, 1 ) long -> x1
+; V07 tmp5 [V07,T04] ( 3, 1.50) long -> x1
; V08 tmp6 [V08,T02] ( 2, 2 ) long -> x1 "Cast away GC" ; V09 tmp7 [V09,T03] ( 2, 2 ) long -> x1 "argument with side effect" ; @@ -36,13 +36,18 @@ G_M5667_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20} movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ bl CORINFO_HELP_INITINSTCLASS
; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M5667_IG05
+ cbz x0, G_M5667_IG07
;; size=24 bbWeight=1 PerfScore 4.00
-G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
+ cbnz x19, G_M5667_IG04 + mov x1, xzr + b G_M5667_IG05 + ;; size=12 bbWeight=0.50 PerfScore 1.25 +G_M5667_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Runtime.InteropServices.Marshal:GetIDispatchForObject(System.Object):long @@ -53,6 +58,8 @@ G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x ; gcrRegs -[x0 x19] ; gcr arg pop 0 mov x1, x0
+ ;; size=28 bbWeight=0.50 PerfScore 3.25 +G_M5667_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
mov x8, x20 ; byrRegs +[x8] mov w0, #9 @@ -63,13 +70,13 @@ G_M5667_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 {x blr x2 ; byrRegs -[x8 x20] ; gcr arg pop 0
- ;; size=56 bbWeight=0.50 PerfScore 6.50 -G_M5667_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.50 PerfScore 3.25 +G_M5667_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M5667_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
+G_M5667_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, gcvars, byref
; gcrRegs +[x19] ; byrRegs +[x20] mov x1, x20 @@ -80,14 +87,14 @@ G_M5667_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M5667_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M5667_IG08: ; bbWeight=0.50, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 br x2 ; gcr arg pop 0 ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 148, prolog size 20, PerfScore 19.75, instruction count 37, allocated bytes for code 148 (MethodHash=fb8de9dc) for method Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
+; Total bytes of code 160, prolog size 20, PerfScore 21.00, instruction count 40, allocated bytes for code 160 (MethodHash=fb8de9dc) for method Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -98,7 +105,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+22.22%) : 16156.dasm - Microsoft.FSharp.Control.AsyncActivation1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc2[System.Canon,System.Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)

@@ -8,76 +8,75 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) byref -> x19 this single-def -; V01 TypeCtx [V01,T01] ( 5, 4.20) long -> x1 single-def -; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) byref -> x20 this single-def +; V01 TypeCtx [V01,T01] ( 5, 5 ) long -> x19 single-def +; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivationContents`1[System.__Canon]>
+; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivationContents`1[System.__Canon]>
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 tmp5 [V08,T06] ( 2, 4 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Control.AsyncActivationAux>
+; V08 tmp5 [V08,T04] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Control.AsyncActivationAux>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.contents (fldOffset=0x0)" P-INDEP
-; V10 rat0 [V10,T05] ( 3, 4 ) long -> x0 "runtime lookup" -; V11 rat1 [V11,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 G_M49691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp str x1, [fp, #0x18]
- mov x19, x0 - ; byrRegs +[x19] - mov x20, x2 - ; gcrRegs +[x20] - ;; size=24 bbWeight=1 PerfScore 4.50 -G_M49691_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M49691_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M49691_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M49691_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M49691_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x19, x1 + mov x21, x2 + ; gcrRegs +[x21] + ;; size=32 bbWeight=1 PerfScore 6.00 +G_M49691_IG02: ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M49691_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0]
- ldr x14, [x19]
+ mov x22, x0 + ; gcrRegs +[x22] + ldr x14, [x20]
; gcrRegs +[x14]
- ldr x1, [x14, #0x10] - ; gcrRegs +[x1] - add x14, x0, #8
+ ldr x0, [x14, #0x10] + add x14, x22, #8
; gcrRegs -[x14] ; byrRegs +[x14]
- mov x15, x20
+ mov x15, x21
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20] - ; byrRegs -[x14 x19] - add x14, x0, #16
+ ; gcrRegs -[x15 x21] + ; byrRegs -[x14 x20] + add x14, x22, #16
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x0
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x1 x15]
+ ; gcrRegs -[x0 x15]
; byrRegs -[x14]
- ;; size=36 bbWeight=1 PerfScore 11.00 -G_M49691_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x22 + ; gcrRegs +[x0] + ;; size=84 bbWeight=1 PerfScore 18.00 +G_M49691_IG03: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
-; Total bytes of code 108, prolog size 16, PerfScore 26.90, instruction count 27, allocated bytes for code 108 (MethodHash=7be33de4) for method Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 132, prolog size 20, PerfScore 28.00, instruction count 33, allocated bytes for code 132 (MethodHash=7be33de4) for method Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -88,7 +87,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -96,9 +95,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end E4 end

libraries_tests.run.windows.arm64.Release.mch

-36 (-33.33%) : 187.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -17,28 +17,13 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x28] str x0, [fp, #0x20] // [V00 TypeCtx] ;; size=16 bbWeight=1 PerfScore 3.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M41558_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x20] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V02 tmp1] - b G_M41558_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x20] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V02 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V02 tmp1] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -46,13 +31,13 @@ G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 7.50 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=1 PerfScore 13.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 12, PerfScore 31.10, instruction count 27, allocated bytes for code 108 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 72, prolog size 12, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info: @@ -63,7 +48,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-31.03%) : 1002.dasm - System.Tuple:CreateSystem.Canon,System.Canon:System.Tuple`2System.Canon,System.Canon

@@ -8,15 +8,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> -; V02 arg1 [V02,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T01] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> +; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 rat0 [V06,T06] ( 3, 4 ) long -> x1 "runtime lookup" -; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "spilling expr" -; V08 rat2 [V08,T05] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -30,29 +27,12 @@ G_M54721_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x20, x2 ; gcrRegs +[x20] ;; size=24 bbWeight=1 PerfScore 4.50
-G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cmp x2, #32 - ble G_M54721_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M54721_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x1, #0x20] - cbz x1, G_M54721_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M54721_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M54721_IG06 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M54721_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M54721_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -68,14 +48,14 @@ G_M54721_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x20] ; byrRegs -[x14]
- ;; size=32 bbWeight=1 PerfScore 5.50 -G_M54721_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1 PerfScore 7.50 +G_M54721_IG03: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 116, prolog size 16, PerfScore 25.42, instruction count 29, allocated bytes for code 116 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)
+; Total bytes of code 80, prolog size 16, PerfScore 15.00, instruction count 20, allocated bytes for code 80 (MethodHash=1c7b2a3e) for method System.Tuple:Create[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon] (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -86,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-30.00%) : 2309.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -20,28 +20,13 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x30] // [V00 TypeCtx] str x1, [fp, #0x28] // [V01 arg0] ;; size=20 bbWeight=1 PerfScore 4.50
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M56297_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V00 TypeCtx] - ldr x0, [x0, #0x38] - ldr x0, [x0, #0x10] - str x0, [fp, #0x18] // [V04 tmp1] - b G_M56297_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x30] // [V00 TypeCtx] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
str x0, [fp, #0x18] // [V04 tmp1]
- ;; size=24 bbWeight=0.20 PerfScore 1.10 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x2, fp, #32 // [V02 loc0] ldr x0, [fp, #0x18] // [V04 tmp1] ldr x1, [fp, #0x28] // [V01 arg0] @@ -52,13 +37,13 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x40 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 120, prolog size 12, PerfScore 34.60, instruction count 30, allocated bytes for code 120 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -69,7 +54,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 4155.dasm - Xunit.DelegatingXmlCreationSink:GetTestCollectionElement(Xunit.Abstractions.ITestCollection):System.Xml.Linq.XElement:this (Tier0)

@@ -74,9 +74,11 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #210
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -94,7 +96,7 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x18] // [V12 tmp7] @@ -103,9 +105,11 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #210
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -128,7 +132,8 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #210
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 ldr x15, [fp, #0x18] // [V12 tmp7] ; gcrRegs +[x15] @@ -137,6 +142,7 @@ G_M37032_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x14, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
+ ; byrRegs -[x0]
ldr x0, [fp, #0x18] // [V12 tmp7] ; gcrRegs +[x0] str x0, [fp, #0x20] // [V11 tmp6]

+0 (0.00%) : 4211.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:GetTypeData(System.Type,ubyte):System.ComponentModel.ReflectTypeDescriptionProvider+ReflectedTypeData:this (Tier0)

@@ -65,7 +65,7 @@ G_M58772_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTCLASS
+ bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 str x0, [fp, #0x58] // [V03 loc0] @@ -83,9 +83,11 @@ G_M58772_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #91
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -131,7 +133,7 @@ G_M58772_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_CHKCASTCLASS
+ bl CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 str x0, [fp, #0x58] // [V03 loc0] @@ -150,7 +152,7 @@ G_M58772_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x40] // [V07 tmp1] @@ -174,7 +176,7 @@ G_M58772_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x38] // [V08 tmp2]

+0 (0.00%) : 4196.dasm - System.ComponentModel.TypeDescriptor:CheckDefaultProvider(System.Type) (Tier0)

@@ -30,9 +30,11 @@ G_M11184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #97
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -56,9 +58,11 @@ G_M11184_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #97
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -78,9 +82,11 @@ G_M11184_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #97
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x0, [x0]

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-24 (-31.58%) : 2244.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M41558_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M41558_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for System.Array:Empty[System.__Canon]():System.__Canon[] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-26.19%) : 2361.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilderSystem.ValueTuple3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray1+Builder[System.ValueTuple`3[int,int,System.__Canon]

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP
-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> x1 "argument with side effect" -; V07 rat0 [V07,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T05] ( 3, 4 ) long -> x1 "runtime lookup" -; V10 rat3 [V10,T02] ( 3, 5.60) long -> x0 "spilling expr" -; V11 rat4 [V11,T03] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> x1 "argument with side effect"
; ; Lcl frame size = 24 @@ -29,22 +24,12 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, stp xzr, x0, [fp, #0x18] // [V01 loc0] mov x19, x0 ;; size=20 bbWeight=1 PerfScore 4.00
-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M7461_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7461_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
movz x1, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -52,28 +37,13 @@ G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blr x1 ; gcrRegs +[x0] str x0, [fp, #0x18] // [V01 loc0]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M7461_IG08 - ;; size=40 bbWeight=1 PerfScore 14.00 -G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x18] - cbz x1, G_M7461_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M7461_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x1, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x0, fp, #24 // [V01 loc0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this movk x2, #0xD1FFAB1E LSL #16 @@ -81,14 +51,14 @@ G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs +[x0]
- ;; size=24 bbWeight=1 PerfScore 6.00 -G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=92 bbWeight=1 PerfScore 19.00 +G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28] ldp fp, lr, [sp], #0x30 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 168, prolog size 16, PerfScore 41.50, instruction count 42, allocated bytes for code 168 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
+; Total bytes of code 124, prolog size 16, PerfScore 27.00, instruction count 31, allocated bytes for code 124 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
; ============================================================ Unwind Info: @@ -99,7 +69,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-44 (-24.44%) : 587.dasm - System.Linq.Enumerable:SetCountAndGetSpanSystem.__Canon:System.Span`1System.__Canon

@@ -7,22 +7,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> x19 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
; V01 arg0 [V01,T01] ( 4, 4 ) ref -> x20 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
-; V02 arg1 [V02,T04] ( 3, 3 ) int -> x21 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) int -> x21 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V09 tmp6 [V09,T08] ( 2, 4 ) long -> x0 "argument with side effect" -; V10 tmp7 [V10,T09] ( 2, 4 ) long -> x0 "argument with side effect" -; V11 rat0 [V11,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat1 [V12,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V13 rat2 [V13,T07] ( 3, 4 ) long -> x0 "runtime lookup" -; V14 rat3 [V14,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V15 rat4 [V15,T05] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 tmp6 [V09,T03] ( 2, 4 ) long -> x0 "argument with side effect" +; V10 tmp7 [V10,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -37,22 +32,12 @@ G_M26687_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x20] mov w21, w2 ;; size=32 bbWeight=1 PerfScore 6.00
-G_M26687_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M26687_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M26687_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M26687_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M26687_IG02: ; bbWeight=1, 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 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] mov w2, w21 @@ -62,41 +47,26 @@ G_M26687_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ldr x3, [x3] blr x3 ; gcrRegs -[x1]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M26687_IG08 - ;; size=44 bbWeight=1 PerfScore 14.00 -G_M26687_IG06: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M26687_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M26687_IG07: ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M26687_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M26687_IG08: ; bbWeight=0.36, 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 - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M26687_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bl CORINFO_HELP_MEMCPY
mov x1, x20 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M26687_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=88 bbWeight=1 PerfScore 17.50 +G_M26687_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x2 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 180, prolog size 20, PerfScore 43.32, instruction count 45, allocated bytes for code 180 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (MethodHash=8da497c0) for method System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 180 (0x0000b4)
+ Function Length : 34 (0x00022) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+16.67%) : 6652.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValidSystem.__Canon:ubyte (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T04] ( 5, 3.60) long -> x0 single-def -; V01 arg0 [V01,T05] ( 4, 3 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> -; V02 arg1 [V02,T06] ( 3, 3 ) ubyte -> x2 single-def
+; V00 TypeCtx [V00,T01] ( 7, 11.50) long -> x19 single-def +; V01 arg0 [V01,T04] ( 4, 3 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> +; V02 arg1 [V02,T05] ( 3, 3 ) ubyte -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V04 loc1 [V04 ] ( 2, 8 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V04 loc1 [V04 ] ( 2, 4 ) struct (80) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V05 loc2 [V05 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult> ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -21,39 +21,39 @@ ;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V13 tmp7 [V13,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V14 tmp8 [V14,T01] ( 3, 12 ) ubyte -> x0 "Inline stloc first use temp"
+;* V13 tmp7 [V13,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V14 tmp8 [V14,T03] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]> ;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V18 tmp12 [V18,T02] ( 4, 9 ) ref -> x19 "field V03._builder (fldOffset=0x0)" P-INDEP -; V19 tmp13 [V19,T00] ( 8, 18 ) int -> x20 "field V03._index (fldOffset=0x8)" P-INDEP
+; V18 tmp12 [V18,T02] ( 3, 6.50) ref -> x20 "field V03._builder (fldOffset=0x0)" P-INDEP +; V19 tmp13 [V19,T00] ( 5, 14.50) int -> x21 "field V03._index (fldOffset=0x8)" P-INDEP
;* V20 tmp14 [V20 ] ( 0, 0 ) ubyte -> zero-ref "V05.[004..005)"
-; V21 tmp15 [V21,T09] ( 2, 2 ) long -> x0 "argument with side effect" -; V22 rat0 [V22,T08] ( 3, 2 ) long -> x0 "runtime lookup" -; V23 rat1 [V23,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V21 tmp15 [V21,T07] ( 2, 2 ) long -> x0 "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
-G_M36549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36549_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x80]!
- stp x19, x20, [sp, #0x70]
+ stp x19, x20, [sp, #0x68] + str x21, [sp, #0x78]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0 stp q16, q16, [x9] stp q16, q16, [x9, #0x20] stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x68] - mov x19, x1 - ; gcrRegs +[x19] - ;; size=40 bbWeight=1 PerfScore 8.00 -G_M36549_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ str x0, [fp, #0x60] + mov x19, x0 + mov x20, x1 + ; gcrRegs +[x20] + ;; size=48 bbWeight=1 PerfScore 9.50 +G_M36549_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
tst w2, #255
- beq G_M36549_IG09
+ beq G_M36549_IG10
;; size=8 bbWeight=1 PerfScore 1.50
-G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - mov x0, x19
+G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + mov x0, x20
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this movk x1, #0xD1FFAB1E LSL #16 @@ -61,22 +61,23 @@ G_M36549_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] ldr wzr, [x0] blr x1
- ; gcrRegs -[x19] - mov x19, x0 - ; gcrRegs +[x19] - mov w20, w1 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ldr w0, [x0, #0x10]
+ ; gcrRegs -[x20] + mov x20, x0 + ; gcrRegs +[x20] + mov w21, w1 + b G_M36549_IG05 + ;; size=40 bbWeight=0.50 PerfScore 5.50 +G_M36549_IG04: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w20, w0 - bge G_M36549_IG05 - ;; size=56 bbWeight=0.50 PerfScore 9.00 -G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x08]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- add x8, fp, #24 // [V04 loc1] - mov w1, w20
+ add x8, fp, #16 // [V04 loc1] + mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 @@ -84,70 +85,75 @@ G_M36549_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ldr wzr, [x0] blr x2 ; gcrRegs -[x0]
- ldrb w0, [fp, #0x34] // [V04 loc1+0x1c]
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldrb w0, [fp, #0x2C] // [V04 loc1+0x1c]
sub w1, w0, #1 sub w0, w0, #22 cmp w1, #1 ccmp w0, #1, z, hi
- bls G_M36549_IG07 - add w20, w20, #1 - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - ldr w0, [x0, #0x10] - ; gcrRegs -[x0] - cmp w20, w0 - blt G_M36549_IG04 - ;; size=80 bbWeight=4 PerfScore 102.00 -G_M36549_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG06: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M36549_IG08: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70] - ldp fp, lr, [sp], #0x80 - ret lr - ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M36549_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M36549_IG11 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M36549_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M36549_IG12 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M36549_IG11: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bls G_M36549_IG08 + ;; size=100 bbWeight=2 PerfScore 47.00 +G_M36549_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M36549_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x1, x19
+ bl CORINFO_HELP_MEMCPY + add w21, w21, #1 + ldr x0, [x20, #0x08] + ; gcrRegs +[x0] + ldr w0, [x0, #0x10] + ; gcrRegs -[x0] + cmp w21, w0 + blt G_M36549_IG04 + ;; size=40 bbWeight=4 PerfScore 44.00 +G_M36549_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG07: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M36549_IG09: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68] + ldp fp, lr, [sp], #0x80 + ret lr + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M36549_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x20] + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x1, x20
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.OverloadResolution:SingleValidResult[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]):ubyte movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ; gcrRegs -[x1 x19] - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M36549_IG13: ; bbWeight=0.50, epilog, nogc, extend - ldp x19, x20, [sp, #0x70]
+ ; gcrRegs -[x1 x20] + ;; size=44 bbWeight=0.50 PerfScore 4.50 +G_M36549_IG11: ; bbWeight=0.50, epilog, nogc, extend + ldr x21, [sp, #0x78] + ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 288, prolog size 36, PerfScore 132.85, instruction count 72, allocated bytes for code 288 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
+; Total bytes of code 336, prolog size 40, PerfScore 120.00, instruction count 84, allocated bytes for code 336 (MethodHash=8985713a) for method Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -158,7 +164,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 288 (0x000120)
+ Function Length : 84 (0x00054) Actual length = 336 (0x000150)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -172,10 +178,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- ...

+24 (+23.08%) : 8002.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -8,69 +8,68 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> x19 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T01] ( 4, 6 ) long -> x11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> x23 "VirtualCall with runtime lookup"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]> ;* V07 tmp4 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp7 [V10,T04] ( 2, 2 ) ref -> x20 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> x21 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> x21 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> x22 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> x0 single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> x1 "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x21, x22, [sp, #0x28] + str x23, [sp, #0x38]
mov fp, sp str x0, [fp, #0x10]
- mov x20, x1
+ mov x19, x0 + mov x21, x1 + ; gcrRegs +[x21] + mov w22, w2 + mov x20, x3
; gcrRegs +[x20]
- mov w21, w2 - mov x19, x3 - ; gcrRegs +[x19] - ;; size=32 bbWeight=1 PerfScore 6.00 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x11, [x1, #0x10] - cbz x11, G_M18340_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M18340_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 7.50 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x11, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - mov x0, x20
+ bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x0, x21
; gcrRegs +[x0]
- mov x1, x19
+ mov x11, x23 + mov x1, x20
; gcrRegs +[x1]
- ldr x2, [x11]
+ ldr x2, [x23]
blr x2
- ; gcrRegs -[x1 x19-x20] - uxtb w1, w21 - ;; size=20 bbWeight=1 PerfScore 5.50 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x21, [sp, #0x28]
+ ; gcrRegs -[x1 x20-x21] + uxtb w1, w22 + ;; size=68 bbWeight=1 PerfScore 12.50 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 104, prolog size 20, PerfScore 24.90, instruction count 26, allocated bytes for code 104 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 128, prolog size 24, PerfScore 26.00, instruction count 32, allocated bytes for code 128 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -81,7 +80,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,9 +88,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56] + E6 save_next
C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end

+24 (+31.58%) : 6207.dasm - System.Collections.Immutable.ImmutableArray1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -8,57 +8,54 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> x19 this single-def -; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> x1 single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> x20 this single-def +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> x19 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> x21 "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T04] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T03] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
; ; Lcl frame size = 8 G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]! - str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x18] + str x21, [sp, #0x28]
mov fp, sp str x1, [fp, #0x10]
- mov x19, x0 - ; byrRegs +[x19] - ;; size=20 bbWeight=1 PerfScore 4.00 -G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x1, #0x38] - ldr x0, [x0, #0x10] - cbz x0, G_M44373_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M44373_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov x0, x1
+ mov x20, x0 + ; byrRegs +[x20] + mov x19, x1 + ;; size=28 bbWeight=1 PerfScore 5.50 +G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref + mov x0, x19
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ldr x1, [x19]
+ bl CORINFO_HELP_MEMCPY + mov x21, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + ldr x1, [x20]
; gcrRegs +[x1]
- bl CORINFO_HELP_ISINSTANCEOFARRAY
+ mov x0, x21 + bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1] +[x0]
- ; byrRegs -[x19] - ;; size=8 bbWeight=1 PerfScore 4.00 -G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+ ; byrRegs -[x20] + ;; size=56 bbWeight=1 PerfScore 11.00 +G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 76, prolog size 16, PerfScore 20.40, instruction count 19, allocated bytes for code 76 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 100, prolog size 20, PerfScore 21.50, instruction count 25, allocated bytes for code 100 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -69,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -77,10 +74,9 @@ 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
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] + C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] + 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end E4 end

realworld.run.windows.arm64.checked.mch

-24 (-31.58%) : 10840.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> x1 "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -20,36 +18,24 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=1 PerfScore 2.50
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M15963_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - b G_M15963_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 7.00 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20 br x1 ; gcr arg pop 0 ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 12, PerfScore 17.90, instruction count 19, allocated bytes for code 76 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 52, prolog size 12, PerfScore 11.50, instruction count 13, allocated bytes for code 52 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -60,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 3173.dasm - Microsoft.FSharp.Collections.IEnumerator:mkSeqSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.IEnumerator+mkSeq@177[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M38576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M38576_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M38576_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M38576_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M38576_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M38576_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M38576_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M38576_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M38576_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=af2b694f) for method Microsoft.FSharp.Collections.IEnumerator:mkSeq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-24 (-27.27%) : 2286.dasm - Microsoft.FSharp.Control.AsyncPrimitives:MakeAsyncSystem.__Canon:Microsoft.FSharp.Control.FSharpAsync`1System.__Canon

@@ -8,13 +8,11 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 3, 4 ) long -> x1 "runtime lookup" -; V06 rat1 [V06,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -26,24 +24,12 @@ G_M3011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x1 ; gcrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x10] - cbz x1, G_M3011_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M3011_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M3011_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M3011_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3011_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x1, x0 - ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x1 - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] add x14, x0, #8 ; byrRegs +[x14] @@ -52,14 +38,14 @@ G_M3011_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19] ; byrRegs -[x14]
- ;; size=20 bbWeight=1 PerfScore 3.50 -G_M3011_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 5.50 +G_M3011_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 88, prolog size 16, PerfScore 19.90, instruction count 22, allocated bytes for code 88 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
+; Total bytes of code 64, prolog size 16, PerfScore 13.50, instruction count 16, allocated bytes for code 64 (MethodHash=daccf43c) for method Microsoft.FSharp.Control.AsyncPrimitives:MakeAsync[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 88 (0x000058)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+48 (+10.62%) : 5872.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkcomparesigSystem.__Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -8,72 +8,64 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 3, 3 ) ref -> x21 this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals> -; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
+; V00 this [V00,T03] ( 3, 3 ) ref -> x21 this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals> +; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 4, 4 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T27] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V05 tmp2 [V05,T24] ( 2, 4 ) long -> x0 "spilling helperCall" -; V06 tmp3 [V06,T25] ( 2, 4 ) long -> x23 "spilling helperCall" -; V07 tmp4 [V07,T16] ( 2, 4 ) ref -> x23 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x22 "spilling helperCall" -;* V09 tmp6 [V09,T28] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V10 tmp7 [V10,T17] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V11 tmp8 [V11,T26] ( 2, 4 ) long -> x22 "spilling helperCall" -; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x24 "spilling helperCall"
+; V04 tmp1 [V04,T12] ( 2, 4 ) long -> x22 "spilling helperCall" +; V05 tmp2 [V05,T13] ( 2, 4 ) long -> x23 "spilling helperCall" +; V06 tmp3 [V06,T14] ( 2, 4 ) long -> x24 "spilling helperCall" +; V07 tmp4 [V07,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V08 tmp5 [V08,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V09 tmp6 [V09,T16] ( 2, 4 ) long -> x25 "spilling helperCall" +; V10 tmp7 [V10,T05] ( 2, 4 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V11 tmp8 [V11,T17] ( 2, 4 ) long -> x23 "spilling helperCall" +; V12 tmp9 [V12,T18] ( 2, 4 ) long -> x24 "spilling helperCall"
; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp12 [V15,T18] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V16 tmp13 [V16,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V17 tmp14 [V17,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V18 tmp15 [V18,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp16 [V19,T22] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 tmp17 [V20,T23] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V21 cse0 [V21,T08] ( 4, 4 ) long -> x22 "CSE - aggressive" -; V22 cse1 [V22,T12] ( 3, 3 ) long -> x24 "CSE - moderate" -; V23 rat0 [V23,T13] ( 3, 4 ) long -> x22 "runtime lookup" -; V24 rat1 [V24,T05] ( 3, 5.60) long -> x22 "fgMakeTemp is creating a new local variable" -; V25 rat2 [V25,T14] ( 3, 4 ) long -> x24 "runtime lookup" -; V26 rat3 [V26,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V27 rat4 [V27,T10] ( 3, 4.48) long -> x24 "fgMakeTemp is creating a new local variable" -; V28 rat5 [V28,T15] ( 3, 4 ) long -> x0 "runtime lookup" -; V29 rat6 [V29,T07] ( 3, 5.60) long -> x0 "spilling expr" -; V30 rat7 [V30,T11] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V15 tmp12 [V15,T06] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V16 tmp13 [V16,T07] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> +; V17 tmp14 [V17,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V18 tmp15 [V18,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp16 [V19,T10] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V20 tmp17 [V20,T11] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M38496_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x21, x0 ; gcrRegs +[x21] mov x19, x1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00 -G_M38496_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x22, [x0, #0x10] - cbz x22, G_M38496_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M38496_IG03: ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref - b G_M38496_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M38496_IG04: ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=1 PerfScore 8.00 +G_M38496_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x22, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M38496_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0
mov x0, x22
- mov x23, x22
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -92,31 +84,22 @@ G_M38496_IG05: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
- mov x23, x0 - ; gcrRegs +[x23] - ldr x0, [x19, #0x38]
+ mov x22, x0 + ; gcrRegs +[x22] + mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M38496_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M38496_IG06: ; bbWeight=0.80, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr x24, [x0, #0x18] - cbz x24, G_M38496_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M38496_IG07: ; bbWeight=0.64, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref - b G_M38496_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M38496_IG08: ; bbWeight=0.36, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov x24, x0 - ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz - mov x0, x22
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x24
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -127,7 +110,7 @@ G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 ; gcrRegs +[x2] mov x1, x20 ; gcrRegs +[x1]
- mov x0, x22
+ mov x0, x23
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -137,33 +120,29 @@ G_M38496_IG09: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 ; gcrRegs -[x1-x2 x20] +[x0] mov x20, x0 ; gcrRegs +[x20]
- mov x22, x24 - ldr x0, [x19, #0x38]
+ mov x0, x19
; gcrRegs -[x0]
- ldr x1, [x0, #0x08] - cmp x1, #32 - ble G_M38496_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M38496_IG10: ; bbWeight=0.80, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x20] - cbz x0, G_M38496_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M38496_IG11: ; bbWeight=0.64, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref - b G_M38496_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M38496_IG12: ; bbWeight=0.36, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19]
- mov x0, x22
+ mov x0, x25
; gcrRegs -[x0] movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 @@ -175,7 +154,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 ; gcrRegs +[x2] mov x1, x20 ; gcrRegs +[x1]
- mov x0, x24
+ mov x0, x23
; gcrRegs -[x0] movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x3, #0xD1FFAB1E LSL #16 @@ -185,7 +164,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 ; gcrRegs -[x1-x2 x20] +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x1, x23
+ mov x1, x22
; gcrRegs +[x1] mov x0, x24 ; gcrRegs -[x0] @@ -194,7 +173,7 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ; gcrRegs -[x1-x2 x23] +[x0]
+ ; gcrRegs -[x1-x2 x22] +[x0]
mov x15, x0 ; gcrRegs +[x15] ldr x0, [x21, #0xD1FFAB1E] @@ -212,27 +191,28 @@ G_M38496_IG13: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 ; byrRegs -[x14] mov x0, x19 ; gcrRegs +[x0]
- ;; size=128 bbWeight=1 PerfScore 29.00 -G_M38496_IG14: ; bbWeight=1, epilog, nogc, extend - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20]
+ ;; size=436 bbWeight=1 PerfScore 83.50 +G_M38496_IG03: ; bbWeight=1, epilog, nogc, extend
...

+48 (+10.81%) : 5882.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mkbinoptySystem.__Canon:System.Tuple`2[System.Canon,System.Canon]:this (FullOpts)

@@ -9,68 +9,94 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 TypeCtx [V01,T00] ( 9, 6.92) long -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 11, 11 ) long -> x19 single-def
; V02 arg1 [V02,T02] ( 5, 5 ) ref -> x20 class-hnd single-def <System.__Canon> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T25] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V05 tmp2 [V05,T22] ( 2, 4 ) long -> x0 "spilling helperCall" -; V06 tmp3 [V06,T23] ( 2, 4 ) long -> x22 "spilling helperCall" -; V07 tmp4 [V07,T15] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V08 tmp5 [V08,T03] ( 3, 6 ) long -> x21 "spilling helperCall" -;* V09 tmp6 [V09,T26] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V10 tmp7 [V10,T16] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V11 tmp8 [V11,T24] ( 2, 4 ) long -> x24 "spilling helperCall" -; V12 tmp9 [V12,T04] ( 3, 6 ) long -> x23 "spilling helperCall"
+; V04 tmp1 [V04,T10] ( 2, 4 ) long -> x21 "spilling helperCall" +; V05 tmp2 [V05,T11] ( 2, 4 ) long -> x22 "spilling helperCall" +; V06 tmp3 [V06,T12] ( 2, 4 ) long -> x23 "spilling helperCall" +; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V08 tmp5 [V08,T13] ( 2, 4 ) long -> x22 "spilling helperCall" +; V09 tmp6 [V09,T14] ( 2, 4 ) long -> x24 "spilling helperCall" +; V10 tmp7 [V10,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V11 tmp8 [V11,T15] ( 2, 4 ) long -> x23 "spilling helperCall" +; V12 tmp9 [V12,T16] ( 2, 4 ) long -> x25 "spilling helperCall"
; V13 tmp10 [V13,T01] ( 4, 8 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[System.__Canon,System.__Canon]> ;* V14 tmp11 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp12 [V15,T17] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> -; V16 tmp13 [V16,T18] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V17 tmp14 [V17,T19] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V18 tmp15 [V18,T20] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V19 tmp16 [V19,T21] ( 2, 4 ) ref -> x2 single-def "argument with side effect" -; V20 cse0 [V20,T08] ( 4, 4 ) long -> x21 "CSE - aggressive" -; V21 cse1 [V21,T11] ( 3, 3 ) long -> x23 "CSE - moderate" -; V22 rat0 [V22,T12] ( 3, 4 ) long -> x21 "runtime lookup" -; V23 rat1 [V23,T05] ( 3, 5.60) long -> x21 "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T13] ( 3, 4 ) long -> x23 "runtime lookup" -; V25 rat3 [V25,T06] ( 3, 5.60) long -> x0 "spilling expr" -; V26 rat4 [V26,T09] ( 3, 4.48) long -> x23 "fgMakeTemp is creating a new local variable" -; V27 rat5 [V27,T14] ( 3, 4 ) long -> x0 "runtime lookup" -; V28 rat6 [V28,T07] ( 3, 5.60) long -> x0 "spilling expr" -; V29 rat7 [V29,T10] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V15 tmp12 [V15,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]> +; V16 tmp13 [V16,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V17 tmp14 [V17,T07] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> x2 single-def "argument with side effect" +; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M20173_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40]
+ stp x19, x20, [sp, #0x18] + stp x21, x22, [sp, #0x28] + stp x23, x24, [sp, #0x38] + str x25, [sp, #0x48]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x1 mov x20, x2 ; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50 -G_M20173_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x21, [x0, #0x10] - cbz x21, G_M20173_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M20173_IG03: ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - b G_M20173_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M20173_IG04: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=1 PerfScore 7.50 +G_M20173_IG02: ; bbWeight=1, 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
+ bl CORINFO_HELP_MEMCPY
mov x21, x0
- ;; size=24 bbWeight=0.20 PerfScore 0.70 -G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x23, x0
mov x0, x21
- mov x22, x21
+ movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs +[x0] + mov x2, x0 + ; gcrRegs +[x2] + mov x1, x20 + ; gcrRegs +[x1] + mov x0, x22 + ; gcrRegs -[x0] + movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x1-x2] +[x0] + mov x21, x0 + ; gcrRegs +[x21] + mov x0, x19 + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x22, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + mov x24, x0 + mov x0, x23
movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -91,72 +117,25 @@ G_M20173_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ; gcrRegs -[x1-x2] +[x0] mov x22, x0 ; gcrRegs +[x22]
- ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #24 - ble G_M20173_IG08 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG06: ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - ldr x23, [x0, #0x18] - cbz x23, G_M20173_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG07: ; bbWeight=0.64, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG08: ; bbWeight=0.36, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
mov x0, x19
+ ; gcrRegs -[x0]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY
mov x23, x0
- ;; size=24 bbWeight=0.36 PerfScore 1.26 -G_M20173_IG09: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz - mov x0, x21 - movz x1, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs +[x0] - mov x2, x0 - ; gcrRegs +[x2] - mov x1, x20 - ; gcrRegs +[x1] - mov x0, x21 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2] +[x0] - mov x21, x0 - ; gcrRegs +[x21] - mov x24, x23 - ldr x0, [x19, #0x38] - ; gcrRegs -[x0] - ldr x1, [x0, #0x08] - cmp x1, #32 - ble G_M20173_IG12 - ;; size=80 bbWeight=1 PerfScore 21.50 -G_M20173_IG10: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x20] - cbz x0, G_M20173_IG12 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M20173_IG11: ; bbWeight=0.64, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M20173_IG13 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M20173_IG12: ; bbWeight=0.36, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_MEMCPY + mov x25, x0 + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] mov x19, x0 ; gcrRegs +[x19] @@ -170,18 +149,6 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ; gcrRegs +[x0] mov x2, x0 ; gcrRegs +[x2]
- mov x1, x21 - ; gcrRegs +[x1] - mov x0, x23 - ; gcrRegs -[x0] - movz x3, #0xD1FFAB1E // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x1-x2 x21] +[x0] - mov x2, x0 - ; gcrRegs +[x2]
mov x1, x22 ; gcrRegs +[x1] mov x0, x23 @@ -192,6 +159,18 @@ G_M20173_IG13: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2 x22] +[x0]
+ mov x2, x0 + ; gcrRegs +[x2] + mov x1, x21 + ; gcrRegs +[x1] + mov x0, x25
...

+20 (+13.51%) : 8920.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon

@@ -8,9 +8,9 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x20 single-def -; V01 TypeCtx [V01,T01] ( 5, 3.60) long -> x0 single-def -; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x2 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+; V00 RetBuf [V00,T02] ( 4, 3 ) byref -> x21 single-def +; V01 TypeCtx [V01,T01] ( 5, 4.50) long -> x20 single-def +; V02 arg0 [V02,T03] ( 4, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
; V03 arg1 [V03,T00] ( 4, 7 ) byref -> x19 ld-addr-op single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -19,83 +19,80 @@ ;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref "field V03._exception (fldOffset=0x8)" P-INDEP ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref "field V03._tag (fldOffset=0x10)" P-INDEP ;* V10 tmp6 [V10 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-; V11 tmp7 [V11,T06] ( 2, 2 ) long -> x0 "argument with side effect" -; V12 rat0 [V12,T05] ( 3, 2 ) long -> x0 "runtime lookup" -; V13 rat1 [V13,T04] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V11 tmp7 [V11,T04] ( 2, 2 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 16 G_M63339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
+ stp x21, x22, [sp, #0x30]
mov fp, sp str x0, [fp, #0x18]
+ mov x20, x0 + mov x22, x1 + ; gcrRegs +[x22]
mov x19, x2 ; byrRegs +[x19]
- mov x20, x8 - ; byrRegs +[x20] - mov x2, x1 - ; gcrRegs +[x2] - ;; size=28 bbWeight=1 PerfScore 5.00 -G_M63339_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz - ldr w1, [x19, #0x10] - cmp w1, #1 - beq G_M63339_IG08 - ;; size=12 bbWeight=1 PerfScore 4.50 -G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz - ; gcrRegs -[x2] - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M63339_IG05 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M63339_IG04: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref - mov x0, x2 - b G_M63339_IG06 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M63339_IG05: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+ mov x21, x8 + ; byrRegs +[x21] + ;; size=36 bbWeight=1 PerfScore 6.50 +G_M63339_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz + mov x0, x20
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ bl CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + ldr w0, [x19, #0x10] + cmp w0, #1 + beq G_M63339_IG05 + ;; size=32 bbWeight=1 PerfScore 7.50 +G_M63339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref + ; gcrRegs -[x22] + mov x0, x20 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_MEMCPY
; gcr arg pop 0
- ;; size=16 bbWeight=0.10 PerfScore 0.25 -G_M63339_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
ldr x1, [x19] ; gcrRegs +[x1]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] movz x2, #0xD1FFAB1E // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon] movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M63339_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=44 bbWeight=0.50 PerfScore 5.50 +G_M63339_IG04: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50 -G_M63339_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref - ; gcrRegs -[x1] +[x2]
+ ;; size=16 bbWeight=0.50 PerfScore 2.00 +G_M63339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref + ; gcrRegs -[x1] +[x22]
; byrRegs -[x8 x19]
- mov x0, x2
+ mov x0, x22
; gcrRegs +[x0]
- mov x8, x20
+ mov x8, x21
; byrRegs +[x8] mov x1, xzr
- ldr x2, [x2] - ; gcrRegs -[x2]
+ ldr x2, [x22]
ldr x2, [x2, #0x48] ldr x2, [x2, #0x20] ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG06: ; bbWeight=0.50, epilog, nogc, extend + ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x40
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 168, prolog size 36, PerfScore 28.75, instruction count 42, allocated bytes for code 168 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -106,7 +103,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -117,9 +114,9 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
+ E6 save_next
C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! - E4 end
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 138 108 4 26 -5,724 +32
benchmarks.run_pgo.windows.arm64.checked.mch 354 303 19 32 -20,564 +152
benchmarks.run_tiered.windows.arm64.checked.mch 276 238 2 36 -17,652 +28
coreclr_tests.run.windows.arm64.checked.mch 6 6 0 0 -176 +0
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 424 324 8 92 -11,248 +900
libraries_tests.run.windows.arm64.Release.mch 234 226 0 8 -20,616 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 196 136 16 44 -7,596 +428
realworld.run.windows.arm64.checked.mch 353 319 14 20 -17,500 +408
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
1,981 1,660 63 258 -101,076 +1,948

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 4,618 1 4,617 9 (0.10%) 3,753 (42.81%)
benchmarks.run_pgo.windows.arm64.checked.mch 15,006 12,537 2,469 7 (0.03%) 6,512 (29.72%)
benchmarks.run_tiered.windows.arm64.checked.mch 13,988 11,891 2,097 3 (0.02%) 4,631 (24.35%)
coreclr_tests.run.windows.arm64.checked.mch 604 3 601 4 (0.06%) 5,694 (85.06%)
libraries.crossgen2.windows.arm64.checked.mch 7,675 10 7,665 30 (0.26%) 3,315 (29.11%)
libraries.pmi.windows.arm64.checked.mch 16,126 0 16,126 1 (0.00%) 6,209 (27.32%)
libraries_tests.run.windows.arm64.Release.mch 3,308 2,559 749 0 (0.00%) 3,380 (47.71%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 5,390 0 5,390 1 (0.01%) 4,109 (41.53%)
realworld.run.windows.arm64.checked.mch 9,015 1 9,014 3 (0.02%) 4,579 (32.73%)
smoke_tests.nativeaot.windows.arm64.checked.mch 5,030 3 5,027 165 (1.31%) 7,148 (56.84%)
80,760 27,005 53,755 223 (0.17%) 49,330 (36.80%)

jit-analyze output

benchmarks.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: 931552 (overridden on cmd)
Total bytes of diff: 925860 (overridden on cmd)
Total bytes of delta: -5692 (-0.61 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 996.dasm (6.25 % of base)
           4 : 4787.dasm (2.70 % of base)
           4 : 8432.dasm (4.55 % of base)
           4 : 8521.dasm (5.56 % of base)

Top file improvements (bytes):
        -328 : 4933.dasm (-23.98 % of base)
        -212 : 245.dasm (-30.99 % of base)
        -212 : 587.dasm (-33.12 % of base)
        -208 : 3223.dasm (-15.76 % of base)
        -184 : 249.dasm (-24.34 % of base)
        -184 : 540.dasm (-26.14 % of base)
        -156 : 1823.dasm (-29.32 % of base)
        -144 : 3680.dasm (-15.06 % of base)
        -136 : 7236.dasm (-30.63 % of base)
        -132 : 1561.dasm (-19.30 % of base)
        -128 : 7790.dasm (-25.81 % of base)
        -128 : 475.dasm (-18.71 % of base)
        -128 : 1678.dasm (-27.12 % of base)
        -100 : 214.dasm (-19.84 % of base)
        -100 : 3363.dasm (-24.04 % of base)
        -100 : 7686.dasm (-20.49 % of base)
         -92 : 3359.dasm (-22.12 % of base)
         -72 : 3938.dasm (-23.38 % of base)
         -72 : 7697.dasm (-13.33 % of base)
         -72 : 3505.dasm (-21.95 % of base)

46 total files with Code Size differences (42 improved, 4 regressed), 24 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 996.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (2.70 % of base) : 4787.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           4 (5.56 % of base) : 8521.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 8432.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-15.76 % of base) : 3223.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -156 (-29.32 % of base) : 1823.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -144 (-15.06 % of base) : 3680.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
        -136 (-30.63 % of base) : 7236.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 1561.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -128 (-27.12 % of base) : 1678.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 7790.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 475.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 7686.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 3363.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-19.84 % of base) : 214.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
         -92 (-22.12 % of base) : 3359.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-21.95 % of base) : 3505.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetAttribute[System.__Canon](System.Object):System.__Canon (FullOpts)
         -72 (-13.33 % of base) : 7697.dasm - ProtoBuf.ProtoReader+State:ReadRepeatedCore[System.__Canon,ProtoBuf.Internal.ReadBuffer`1[System.__Canon],System.__Canon](byref,int,int,byref,System.__Canon):this (FullOpts)
         -72 (-24.00 % of base) : 248.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          20 (6.25 % of base) : 996.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           4 (5.56 % of base) : 8521.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 8432.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
           4 (2.70 % of base) : 4787.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -52 (-30.95 % of base) : 8771.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 7236.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 1823.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 1678.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -52 (-27.08 % of base) : 7601.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 540.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -128 (-25.81 % of base) : 7790.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 1131.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-25.00 % of base) : 4693.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-24.44 % of base) : 7336.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 1134.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-24.04 % of base) : 3363.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -72 (-24.00 % of base) : 248.dasm - System.Linq.Enumerable:SkipIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -44 (-23.91 % of base) : 7180.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -72 (-23.38 % of base) : 7251.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-23.38 % of base) : 3938.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)


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: 2407116 (overridden on cmd)
Total bytes of diff: 2386704 (overridden on cmd)
Total bytes of delta: -20412 (-0.85 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 10527.dasm (6.06 % of base)
           8 : 14568.dasm (6.06 % of base)
           8 : 15306.dasm (6.06 % of base)
           8 : 2823.dasm (6.06 % of base)
           8 : 6938.dasm (6.06 % of base)
           8 : 6971.dasm (6.06 % of base)
           8 : 12967.dasm (6.06 % of base)
           8 : 19267.dasm (6.06 % of base)
           8 : 19678.dasm (6.06 % of base)
           8 : 2785.dasm (6.06 % of base)
           8 : 11612.dasm (6.06 % of base)
           8 : 12310.dasm (6.06 % of base)
           8 : 14388.dasm (6.06 % of base)
           8 : 14856.dasm (6.06 % of base)
           8 : 16489.dasm (6.06 % of base)
           8 : 16644.dasm (6.06 % of base)
           8 : 15983.dasm (6.06 % of base)
           8 : 16168.dasm (6.06 % of base)
           8 : 3056.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 1892.dasm (-43.85 % of base)
        -428 : 732.dasm (-42.63 % of base)
        -372 : 1765.dasm (-37.35 % of base)
        -372 : 738.dasm (-35.36 % of base)
        -372 : 12589.dasm (-32.98 % of base)
        -332 : 20046.dasm (-29.75 % of base)
        -316 : 11244.dasm (-38.54 % of base)
        -316 : 17924.dasm (-37.44 % of base)
        -296 : 13910.dasm (-39.78 % of base)
        -260 : 12297.dasm (-39.88 % of base)
        -260 : 1619.dasm (-27.66 % of base)
        -260 : 13606.dasm (-40.37 % of base)
        -260 : 14630.dasm (-35.71 % of base)
        -260 : 13457.dasm (-40.37 % of base)
        -240 : 282.dasm (-32.97 % of base)
        -212 : 13480.dasm (-32.12 % of base)
        -212 : 15416.dasm (-33.12 % of base)
        -212 : 16917.dasm (-33.12 % of base)
        -212 : 14684.dasm (-33.12 % of base)
        -212 : 21233.dasm (-33.12 % of base)

68 total files with Code Size differences (49 improved, 19 regressed), 20 unchanged.

Top method regressions (bytes):
           8 (6.06 % of base) : 10527.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14568.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15306.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2823.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6971.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 12967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19267.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19678.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2785.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 11612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 12310.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14388.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14856.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16489.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16644.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15983.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 3056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-42.63 % of base) : 732.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 1892.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-32.98 % of base) : 12589.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -372 (-35.36 % of base) : 738.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 1765.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -332 (-29.75 % of base) : 20046.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
        -316 (-38.54 % of base) : 11244.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 17924.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 13910.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-39.88 % of base) : 12297.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 13606.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 13457.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-35.71 % of base) : 14630.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1619.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 282.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-32.12 % of base) : 13480.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 15416.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 16917.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 14684.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 21233.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)

Top method regressions (percentages):
           8 (6.06 % of base) : 10527.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14568.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15306.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2823.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6971.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 12967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19267.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19678.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2785.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 11612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 12310.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14388.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 14856.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16489.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16644.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15983.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 3056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 1892.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 732.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-41.82 % of base) : 17286.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 17752.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 20756.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 13606.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 13457.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-39.88 % of base) : 12297.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 13910.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 11366.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -316 (-38.54 % of base) : 11244.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 14336.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 14254.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -148 (-37.76 % of base) : 4196.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 17924.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -372 (-37.35 % of base) : 1765.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-37.00 % of base) : 1878.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 11243.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 13652.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 4198.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)


benchmarks.run_tiered.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: 2106448 (overridden on cmd)
Total bytes of diff: 2088824 (overridden on cmd)
Total bytes of delta: -17624 (-0.84 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 15297.dasm (6.25 % of base)
           8 : 1012.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 1723.dasm (-43.85 % of base)
        -428 : 689.dasm (-42.63 % of base)
        -372 : 695.dasm (-35.36 % of base)
        -372 : 1622.dasm (-37.35 % of base)
        -332 : 17277.dasm (-29.75 % of base)
        -316 : 8118.dasm (-37.44 % of base)
        -316 : 2891.dasm (-38.54 % of base)
        -296 : 6833.dasm (-39.78 % of base)
        -260 : 15172.dasm (-40.37 % of base)
        -260 : 14905.dasm (-35.71 % of base)
        -260 : 8969.dasm (-39.88 % of base)
        -260 : 1473.dasm (-27.66 % of base)
        -240 : 273.dasm (-32.97 % of base)
        -212 : 2772.dasm (-33.12 % of base)
        -204 : 7662.dasm (-23.50 % of base)
        -204 : 8973.dasm (-32.69 % of base)
        -204 : 4364.dasm (-30.00 % of base)
        -204 : 7989.dasm (-32.28 % of base)
        -204 : 623.dasm (-30.18 % of base)
        -184 : 6770.dasm (-24.34 % of base)

52 total files with Code Size differences (50 improved, 2 regressed), 28 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 15297.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           8 (6.06 % of base) : 1012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -428 (-42.63 % of base) : 689.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 1723.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 695.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 1622.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -332 (-29.75 % of base) : 17277.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (Tier0)
        -316 (-38.54 % of base) : 2891.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 8118.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 6833.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-39.88 % of base) : 8969.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 15172.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-35.71 % of base) : 14905.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1473.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 273.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 2772.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-32.28 % of base) : 7989.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-23.50 % of base) : 7662.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
        -204 (-30.00 % of base) : 4364.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-32.69 % of base) : 8973.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 623.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
        -184 (-24.34 % of base) : 6770.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier1)

Top method regressions (percentages):
          20 (6.25 % of base) : 15297.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           8 (6.06 % of base) : 1012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 1723.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 689.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-41.82 % of base) : 7352.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 7867.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 17813.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 15172.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-39.88 % of base) : 8969.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -296 (-39.78 % of base) : 6833.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 3035.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -316 (-38.54 % of base) : 2891.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-38.33 % of base) : 16767.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 14638.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -148 (-37.76 % of base) : 5444.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -316 (-37.44 % of base) : 8118.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -372 (-37.35 % of base) : 1622.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-37.00 % of base) : 1709.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 2890.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 15324.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 5446.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -148 (-36.27 % of base) : 9261.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)


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: 171896 (overridden on cmd)
Total bytes of diff: 171720 (overridden on cmd)
Total bytes of delta: -176 (-0.10 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -48 : 503.dasm (-9.84 % of base)
         -44 : 20430.dasm (-24.44 % of base)
         -24 : 20442.dasm (-20.69 % of base)
         -20 : 20434.dasm (-12.50 % of base)
         -20 : 20178.dasm (-9.26 % of base)
         -20 : 20158.dasm (-12.20 % of base)

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

Top method improvements (bytes):
         -48 (-9.84 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
         -44 (-24.44 % of base) : 20430.dasm - Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -24 (-20.69 % of base) : 20442.dasm - Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -20 (-9.26 % of base) : 20178.dasm - GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)
         -20 (-12.50 % of base) : 20434.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
         -20 (-12.20 % of base) : 20158.dasm - Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)

Top method improvements (percentages):
         -44 (-24.44 % of base) : 20430.dasm - Microsoft.FSharp.Core.PrintfImpl+Specializations`3[System.__Canon,System.__Canon,System.__Canon]:CaptureFinal1[double](Microsoft.FSharp.Core.PrintfImpl+Step[]):Microsoft.FSharp.Core.PrintfImpl+PrintfFuncFactory`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -24 (-20.69 % of base) : 20442.dasm - Microsoft.FSharp.Core.PrintfImpl:TextWriterPrintfEnv[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter):Microsoft.FSharp.Core.PrintfImpl+PrintfEnv`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -20 (-12.50 % of base) : 20434.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,double]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,double):System.__Canon (FullOpts)
         -20 (-12.20 % of base) : 20158.dasm - Program:GenName2ForwardBoth[System.__Canon,System.__Canon](System.__Canon,System.__Canon):System.String (FullOpts)
         -48 (-9.84 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
         -20 (-9.26 % of base) : 20178.dasm - GenInstance`2[System.__Canon,int]:NonVirtForward[System.__Canon,System.__Canon](System.__Canon,int,System.__Canon,System.__Canon):System.String:this (FullOpts)

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


libraries.pmi.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: 1252856 (overridden on cmd)
Total bytes of diff: 1242508 (overridden on cmd)
Total bytes of delta: -10348 (-0.83 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         804 : 7713.dasm (88.16 % of base)
          24 : 16156.dasm (22.22 % of base)
          20 : 11587.dasm (4.50 % of base)
          20 : 11585.dasm (6.02 % of base)
          12 : 754.dasm (8.11 % of base)
          12 : 16157.dasm (6.00 % of base)
           4 : 19305.dasm (1.56 % of base)
           4 : 19309.dasm (0.81 % of base)

Top file improvements (bytes):
        -136 : 24686.dasm (-26.36 % of base)
        -128 : 15354.dasm (-28.07 % of base)
        -128 : 19361.dasm (-28.32 % of base)
        -108 : 15348.dasm (-30.00 % of base)
        -108 : 15349.dasm (-30.00 % of base)
        -108 : 16427.dasm (-24.77 % of base)
        -100 : 15344.dasm (-27.78 % of base)
        -100 : 15345.dasm (-27.78 % of base)
        -100 : 15346.dasm (-27.78 % of base)
        -100 : 15347.dasm (-27.78 % of base)
        -100 : 15350.dasm (-27.78 % of base)
        -100 : 16421.dasm (-28.74 % of base)
        -100 : 16423.dasm (-20.66 % of base)
        -100 : 16425.dasm (-28.74 % of base)
        -100 : 16618.dasm (-28.74 % of base)
        -100 : 16672.dasm (-28.74 % of base)
        -100 : 16676.dasm (-28.74 % of base)
        -100 : 20358.dasm (-20.66 % of base)
        -100 : 20608.dasm (-24.51 % of base)
        -100 : 21494.dasm (-12.02 % of base)

54 total files with Code Size differences (46 improved, 8 regressed), 30 unchanged.

Top method regressions (bytes):
         804 (88.16 % of base) : 7713.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          24 (22.22 % of base) : 16156.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          20 (4.50 % of base) : 11587.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
          20 (6.02 % of base) : 11585.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
          12 (8.11 % of base) : 754.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
          12 (6.00 % of base) : 16157.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
           4 (0.81 % of base) : 19309.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (1.56 % of base) : 19305.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (bytes):
        -136 (-26.36 % of base) : 24686.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
        -128 (-28.07 % of base) : 15354.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
        -128 (-28.32 % of base) : 19361.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
        -108 (-30.00 % of base) : 15348.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[double](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],double):double:this (FullOpts)
        -108 (-30.00 % of base) : 15349.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this (FullOpts)
        -108 (-24.77 % of base) : 16427.dasm - Microsoft.FSharp.Control.TaskBuilder:RunDynamic[System.__Canon](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
        -100 (-27.78 % of base) : 15347.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (FullOpts)
        -100 (-27.78 % of base) : 15350.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[long](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],long):long:this (FullOpts)
        -100 (-27.78 % of base) : 15346.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[short](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],short):short:this (FullOpts)
        -100 (-27.78 % of base) : 15344.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (FullOpts)
        -100 (-27.78 % of base) : 15345.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[ubyte](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],ubyte):ubyte:this (FullOpts)
        -100 (-20.66 % of base) : 16423.dasm - Microsoft.FSharp.Control.TaskBuilderBase:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.Nullable`1[int]],Microsoft.FSharp.Core.Unit]:this (FullOpts)
        -100 (-28.74 % of base) : 16421.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16425.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -100 (-20.66 % of base) : 20358.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.Nullable`1[int],Microsoft.FSharp.Core.Unit] (FullOpts)
        -100 (-12.02 % of base) : 21494.dasm - Microsoft.FSharp.Core.PrintfImpl+ObjectPrinter:GenericToString[System.__Canon](Microsoft.FSharp.Core.PrintfImpl+FormatSpecifier):Microsoft.FSharp.Core.PrintfImpl+ValueConverter (FullOpts)
        -100 (-28.74 % of base) : 16672.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16676.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16618.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
        -100 (-24.51 % of base) : 20608.dasm - Microsoft.FSharp.Quotations.PatternsModule:loop@495-48[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
         804 (88.16 % of base) : 7713.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          24 (22.22 % of base) : 16156.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          12 (8.11 % of base) : 754.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.UnsafeMethods:InitVariantForObject(System.Object,byref) (FullOpts)
          20 (6.02 % of base) : 11585.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
          12 (6.00 % of base) : 16157.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          20 (4.50 % of base) : 11587.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
           4 (1.56 % of base) : 19305.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (0.81 % of base) : 19309.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (percentages):
         -56 (-32.56 % of base) : 319.dasm - Microsoft.CSharp.RuntimeBinder.BinderHelper:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -44 (-30.56 % of base) : 23714.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
         -44 (-30.56 % of base) : 16406.dasm - Microsoft.FSharp.Control.TaskBuilderBase:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]:this (FullOpts)
         -44 (-30.56 % of base) : 20362.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
         -44 (-30.56 % of base) : 20332.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
         -72 (-30.00 % of base) : 23762.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
        -108 (-30.00 % of base) : 15348.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[double](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],double):double:this (FullOpts)
        -108 (-30.00 % of base) : 15349.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this (FullOpts)
         -72 (-29.51 % of base) : 644.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.CollectionExtensions:ToArray[System.__Canon](System.Collections.Generic.IList`1[System.__Canon]):System.__Canon[] (FullOpts)
        -100 (-28.74 % of base) : 16421.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16425.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16672.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16676.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
        -100 (-28.74 % of base) : 16618.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         -72 (-28.57 % of base) : 16330.dasm - Microsoft.FSharp.Control.FSharpAsyncBuilder:Combine[System.__Canon](Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon]:this (FullOpts)
        -128 (-28.32 % of base) : 19361.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 22994.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
         -72 (-28.12 % of base) : 19328.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
        -128 (-28.07 % of base) : 15354.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
        -100 (-27.78 % of base) : 15347.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (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: 615412 (overridden on cmd)
Total bytes of diff: 594796 (overridden on cmd)
Total bytes of delta: -20616 (-3.35 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -428 : 51.dasm (-43.85 % of base)
        -428 : 30.dasm (-41.96 % of base)
        -372 : 141.dasm (-36.19 % of base)
        -372 : 2310.dasm (-36.47 % of base)
        -316 : 5142.dasm (-40.10 % of base)
        -296 : 2870.dasm (-39.78 % of base)
        -260 : 147.dasm (-40.37 % of base)
        -260 : 2338.dasm (-28.14 % of base)
        -260 : 418.dasm (-40.37 % of base)
        -212 : 1733.dasm (-33.12 % of base)
        -212 : 6871.dasm (-33.12 % of base)
        -212 : 928.dasm (-33.12 % of base)
        -204 : 2544.dasm (-32.48 % of base)
        -188 : 1817.dasm (-23.86 % of base)
        -188 : 4349.dasm (-23.86 % of base)
        -188 : 1629.dasm (-23.86 % of base)
        -188 : 1717.dasm (-23.86 % of base)
        -188 : 2045.dasm (-23.86 % of base)
        -188 : 4661.dasm (-23.86 % of base)
        -188 : 913.dasm (-23.86 % of base)

64 total files with Code Size differences (64 improved, 0 regressed), 8 unchanged.

Top method improvements (bytes):
        -428 (-41.96 % of base) : 30.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -428 (-43.85 % of base) : 51.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-36.47 % of base) : 2310.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 141.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -316 (-40.10 % of base) : 5142.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 2870.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 418.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 147.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -260 (-28.14 % of base) : 2338.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -212 (-33.12 % of base) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 6871.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 928.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-32.48 % of base) : 2544.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -188 (-23.86 % of base) : 1817.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 4349.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 1629.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 1717.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 2045.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 4661.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -188 (-23.86 % of base) : 913.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)

Top method improvements (percentages):
        -428 (-43.85 % of base) : 51.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 30.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 418.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -260 (-40.37 % of base) : 147.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -316 (-40.10 % of base) : 5142.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -296 (-39.78 % of base) : 2870.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -148 (-39.78 % of base) : 17.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -148 (-39.78 % of base) : 5231.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier0)
         -92 (-37.70 % of base) : 4959.dasm - Xunit.Assert:Equal[System.__Canon](System.__Canon,System.__Canon) (Tier0)
         -92 (-37.70 % of base) : 5012.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
         -92 (-37.70 % of base) : 5198.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
         -92 (-37.70 % of base) : 2380.dasm - Xunit.Sdk.CollectionExtensions:CastOrToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
         -92 (-37.10 % of base) : 3158.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref,byref) (Tier0)
        -148 (-37.00 % of base) : 4089.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-36.63 % of base) : 5135.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -92 (-36.51 % of base) : 2543.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 2491.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -372 (-36.47 % of base) : 2310.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -148 (-36.27 % of base) : 116.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -372 (-36.19 % of base) : 141.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)


librariestestsnotieredcompilation.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: 1045188 (overridden on cmd)
Total bytes of diff: 1038020 (overridden on cmd)
Total bytes of delta: -7168 (-0.69 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6099.dasm (8.99 % of base)
          64 : 10709.dasm (11.76 % of base)
          64 : 4071.dasm (5.39 % of base)
          48 : 6652.dasm (16.67 % of base)
          28 : 8646.dasm (9.21 % of base)
          24 : 2983.dasm (6.59 % of base)
          24 : 6207.dasm (31.58 % of base)
          24 : 8002.dasm (23.08 % of base)
          20 : 13021.dasm (4.39 % of base)
          20 : 69.dasm (6.25 % of base)
          20 : 9146.dasm (16.13 % of base)
           8 : 2064.dasm (1.36 % of base)
           4 : 8709.dasm (4.35 % of base)
           4 : 8710.dasm (1.89 % of base)
           4 : 4438.dasm (3.45 % of base)
           4 : 8457.dasm (3.45 % of base)

Top file improvements (bytes):
        -384 : 10697.dasm (-25.26 % of base)
        -328 : 991.dasm (-22.47 % of base)
        -328 : 3142.dasm (-23.98 % of base)
        -212 : 3499.dasm (-12.62 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -212 : 13.dasm (-33.33 % of base)
        -200 : 3149.dasm (-19.69 % of base)
        -184 : 457.dasm (-24.34 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -176 : 3391.dasm (-27.85 % of base)
        -160 : 759.dasm (-17.62 % of base)
        -156 : 4404.dasm (-21.91 % of base)
        -136 : 6205.dasm (-18.68 % of base)
        -136 : 2311.dasm (-30.63 % of base)
        -132 : 488.dasm (-19.76 % of base)
        -128 : 470.dasm (-18.71 % of base)
        -128 : 7872.dasm (-29.91 % of base)
        -128 : 845.dasm (-27.12 % of base)
        -100 : 2221.dasm (-24.04 % of base)
        -100 : 620.dasm (-21.93 % of base)

63 total files with Code Size differences (47 improved, 16 regressed), 22 unchanged.

Top method regressions (bytes):
          68 (8.99 % of base) : 6099.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          64 (11.76 % of base) : 10709.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          64 (5.39 % of base) : 4071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          48 (16.67 % of base) : 6652.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          28 (9.21 % of base) : 8646.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          24 (23.08 % of base) : 8002.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          24 (31.58 % of base) : 6207.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (6.59 % of base) : 2983.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          20 (4.39 % of base) : 13021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
          20 (16.13 % of base) : 9146.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           8 (1.36 % of base) : 2064.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
           4 (1.89 % of base) : 8710.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (4.35 % of base) : 8709.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.45 % of base) : 4438.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 8457.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
        -384 (-25.26 % of base) : 10697.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
        -328 (-22.47 % of base) : 991.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -328 (-23.98 % of base) : 3142.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -212 (-12.62 % of base) : 3499.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.33 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -200 (-19.69 % of base) : 3149.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 457.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -176 (-27.85 % of base) : 3391.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -156 (-21.91 % of base) : 4404.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
        -136 (-18.68 % of base) : 6205.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
        -136 (-30.63 % of base) : 2311.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.76 % of base) : 488.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
        -128 (-27.12 % of base) : 845.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
        -128 (-18.71 % of base) : 470.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -128 (-29.91 % of base) : 7872.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -100 (-24.04 % of base) : 2221.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
        -100 (-21.93 % of base) : 620.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)

Top method regressions (percentages):
          24 (31.58 % of base) : 6207.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          24 (23.08 % of base) : 8002.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          48 (16.67 % of base) : 6652.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          20 (16.13 % of base) : 9146.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
          64 (11.76 % of base) : 10709.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          28 (9.21 % of base) : 8646.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          68 (8.99 % of base) : 6099.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          24 (6.59 % of base) : 2983.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          20 (6.25 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          64 (5.39 % of base) : 4071.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          20 (4.39 % of base) : 13021.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
           4 (4.35 % of base) : 8709.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.45 % of base) : 4438.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (3.45 % of base) : 8457.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (1.89 % of base) : 8710.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           8 (1.36 % of base) : 2064.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)

Top method improvements (percentages):
        -212 (-33.33 % of base) : 13.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -24 (-31.58 % of base) : 2244.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 10.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 2311.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 5750.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
        -128 (-29.91 % of base) : 7872.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
         -72 (-28.12 % of base) : 8467.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
        -176 (-27.85 % of base) : 3391.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -128 (-27.12 % of base) : 845.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -44 (-26.19 % of base) : 2361.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
        -184 (-26.14 % of base) : 67.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -72 (-25.71 % of base) : 3250.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
        -384 (-25.26 % of base) : 10697.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
         -72 (-25.00 % of base) : 50.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 3228.dasm - Microsoft.VisualStudio.Composition.DelegateServices:AsFunc[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (FullOpts)
         -44 (-24.44 % of base) : 587.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
        -184 (-24.34 % of base) : 457.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
         -52 (-24.07 % of base) : 4168.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
        -100 (-24.04 % of base) : 2221.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -24 (-24.00 % of base) : 2407.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)


realworld.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: 1675344 (overridden on cmd)
Total bytes of diff: 1658252 (overridden on cmd)
Total bytes of delta: -17092 (-1.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 6210.dasm (12.55 % of base)
          48 : 5861.dasm (10.62 % of base)
          48 : 5872.dasm (10.62 % of base)
          48 : 5882.dasm (10.81 % of base)
          48 : 5885.dasm (10.62 % of base)
          20 : 8920.dasm (13.51 % of base)
          20 : 14679.dasm (6.10 % of base)
          16 : 5809.dasm (8.51 % of base)
           8 : 10612.dasm (5.88 % of base)
           8 : 10340.dasm (3.03 % of base)
           8 : 2049.dasm (4.26 % of base)
           4 : 12219.dasm (5.56 % of base)
           4 : 2284.dasm (1.59 % of base)
           4 : 4695.dasm (0.98 % of base)

Top file improvements (bytes):
        -328 : 3243.dasm (-24.33 % of base)
        -328 : 9573.dasm (-29.29 % of base)
        -228 : 8856.dasm (-28.22 % of base)
        -212 : 245.dasm (-30.99 % of base)
        -212 : 586.dasm (-33.12 % of base)
        -208 : 6045.dasm (-23.01 % of base)
        -208 : 7527.dasm (-23.42 % of base)
        -200 : 5122.dasm (-11.79 % of base)
        -188 : 12498.dasm (-23.86 % of base)
        -184 : 249.dasm (-24.34 % of base)
        -184 : 539.dasm (-26.14 % of base)
        -172 : 5224.dasm (-28.48 % of base)
        -172 : 8239.dasm (-22.63 % of base)
        -172 : 9572.dasm (-18.53 % of base)
        -164 : 4919.dasm (-22.04 % of base)
        -152 : 9574.dasm (-14.02 % of base)
        -144 : 8206.dasm (-20.11 % of base)
        -144 : 9901.dasm (-24.16 % of base)
        -144 : 6005.dasm (-20.81 % of base)
        -144 : 6205.dasm (-21.95 % of base)

69 total files with Code Size differences (55 improved, 14 regressed), 20 unchanged.

Top method regressions (bytes):
         124 (12.55 % of base) : 6210.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (10.81 % of base) : 5882.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5885.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5872.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5861.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          20 (13.51 % of base) : 8920.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          20 (6.10 % of base) : 14679.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
          16 (8.51 % of base) : 5809.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
           8 (3.03 % of base) : 10340.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           8 (4.26 % of base) : 2049.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (5.88 % of base) : 10612.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (0.98 % of base) : 4695.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (1.59 % of base) : 2284.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (5.56 % of base) : 12219.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 9573.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -328 (-24.33 % of base) : 3243.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 8856.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-33.12 % of base) : 586.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 6045.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -208 (-23.42 % of base) : 7527.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
        -200 (-11.79 % of base) : 5122.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -188 (-23.86 % of base) : 12498.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-24.34 % of base) : 249.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 539.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -172 (-22.63 % of base) : 8239.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -172 (-18.53 % of base) : 9572.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -172 (-28.48 % of base) : 5224.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -164 (-22.04 % of base) : 4919.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -152 (-14.02 % of base) : 9574.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -144 (-20.81 % of base) : 6005.dasm - Microsoft.FSharp.Primitives.Basics.List:map2[System.__Canon,ubyte,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[ubyte]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -144 (-20.11 % of base) : 8206.dasm - Microsoft.FSharp.Primitives.Basics.List:mapi2[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -144 (-24.16 % of base) : 9901.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3ToFreshConsTail[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]) (FullOpts)
        -144 (-21.95 % of base) : 6205.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          20 (13.51 % of base) : 8920.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
         124 (12.55 % of base) : 6210.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (10.81 % of base) : 5882.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5885.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5872.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          48 (10.62 % of base) : 5861.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          16 (8.51 % of base) : 5809.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          20 (6.10 % of base) : 14679.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
           8 (5.88 % of base) : 10612.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (5.56 % of base) : 12219.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
           8 (4.26 % of base) : 2049.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (3.03 % of base) : 10340.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
           4 (1.59 % of base) : 2284.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           4 (0.98 % of base) : 4695.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenContinue[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (percentages):
         -60 (-33.33 % of base) : 8490.dasm - FSharp.Compiler.NameResolution:CollectResults2[System.__Canon,System.__Canon](FSharp.Compiler.NameResolution+ResultCollectionSettings,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]] (FullOpts)
        -212 (-33.12 % of base) : 586.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 10344.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 10840.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -212 (-30.99 % of base) : 245.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -56 (-30.43 % of base) : 7466.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -100 (-29.41 % of base) : 4713.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
        -100 (-29.41 % of base) : 4962.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -80 (-29.41 % of base) : 5640.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
         -80 (-29.41 % of base) : 9778.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -328 (-29.29 % of base) : 9573.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -172 (-28.48 % of base) : 5224.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -100 (-28.41 % of base) : 8952.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -228 (-28.22 % of base) : 8856.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
         -80 (-28.17 % of base) : 4705.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 5220.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 9914.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:toSeq[System.__Canon,System.__Canon](Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 4588.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIEnumerator[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -72 (-28.12 % of base) : 10337.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIEnumerator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 4960.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)



windows x64

Diffs are based on 79,883 contexts (35,475 MinOpts, 44,408 FullOpts).

MISSED contexts: base: 47 (0.04%), diff: 46,452 (35.54%)

Overall (-93,689 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 933,140 -3,514
benchmarks.run.windows.x64.checked.mch 638,956 -3,579
benchmarks.run_pgo.windows.x64.checked.mch 1,821,224 -14,091
benchmarks.run_tiered.windows.x64.checked.mch 1,565,006 -14,674
coreclr_tests.run.windows.x64.checked.mch 105,015 +31
libraries.pmi.windows.x64.checked.mch 693,716 -17,504
libraries_tests.run.windows.x64.Release.mch 1,095,020 -17,843
librariestestsnotieredcompilation.run.windows.x64.Release.mch 838,544 -6,155
realworld.run.windows.x64.checked.mch 1,799,819 -16,360

MinOpts (-46,375 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 566,790 -3,837
benchmarks.run_pgo.windows.x64.checked.mch 1,304,129 -13,077
benchmarks.run_tiered.windows.x64.checked.mch 1,425,424 -14,093
libraries_tests.run.windows.x64.Release.mch 833,618 -15,368

FullOpts (-47,314 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 366,350 +323
benchmarks.run.windows.x64.checked.mch 638,882 -3,579
benchmarks.run_pgo.windows.x64.checked.mch 517,095 -1,014
benchmarks.run_tiered.windows.x64.checked.mch 139,582 -581
coreclr_tests.run.windows.x64.checked.mch 105,015 +31
libraries.pmi.windows.x64.checked.mch 693,716 -17,504
libraries_tests.run.windows.x64.Release.mch 261,402 -2,475
librariestestsnotieredcompilation.run.windows.x64.Release.mch 838,544 -6,155
realworld.run.windows.x64.checked.mch 1,799,819 -16,360

Example diffs

aspnet.run.windows.x64.checked.mch

-33 (-36.26%) : 2893.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M41558_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M41558_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] call [<unknown method>] ; gcrRegs +[rax] nop
- ;; size=11 bbWeight=1 PerfScore 4.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=34 bbWeight=1 PerfScore 7.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info:

-33 (-34.38%) : 3995.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - cmp qword ptr [rax+0x18], 0 - je SHORT G_M34046_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - mov rax, qword ptr [rax+0x18] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M34046_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] xor rdx, rdx ; gcrRegs +[rdx] @@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=16 bbWeight=1 PerfScore 4.75 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=39 bbWeight=1 PerfScore 8.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

-33 (-33.33%) : 4050.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:TransientSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -18,26 +18,11 @@ G_M45405_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M45405_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - cmp qword ptr [rax+0x18], 0 - je SHORT G_M45405_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M45405_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x10] - mov rax, qword ptr [rax+0x18] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M45405_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M45405_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45405_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M45405_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] xor rdx, rdx ; gcrRegs +[rdx] @@ -45,14 +30,14 @@ G_M45405_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=19 bbWeight=1 PerfScore 4.75 -G_M45405_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=42 bbWeight=1 PerfScore 8.00 +G_M45405_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 99 (MethodHash=839d4ea2) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 66, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 66 (MethodHash=839d4ea2) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

+46 (+56.79%) : 12248.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)

@@ -9,14 +9,15 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 8 ) double -> mm0 single-def
+; V00 arg0 [V00,T01] ( 9, 9 ) double -> mm0 single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan> ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp4 [V05,T00] ( 2, 2 ) long -> rax "field V02._ticks (fldOffset=0x0)" P-INDEP ;* V06 tmp5 [V06 ] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP
-; V07 cse0 [V07,T02] ( 3, 3 ) double -> mm1 "CSE - aggressive"
+; V07 tmp6 [V07,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +; V08 cse0 [V08,T03] ( 3, 3 ) double -> mm1 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,8 +39,14 @@ G_M20148_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, je SHORT G_M20148_IG06 ;; size=42 bbWeight=1 PerfScore 19.00 G_M20148_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si rax, xmm0
- ;; size=5 bbWeight=1 PerfScore 6.00
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=51 bbWeight=1 PerfScore 20.50
G_M20148_IG04: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret @@ -58,9 +65,12 @@ G_M20148_IG07: ; bbWeight=0, epilog, nogc, extend ;; size=5 bbWeight=0 PerfScore 0.00 RWD00 dq 43E0000000000000h ; 9.22337204e+18 RWD08 dq C3E0000000000000h ; -9.22337204e+18
+RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 81, prolog size 7, PerfScore 27.50, instruction count 21, allocated bytes for code 81 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)
+; Total bytes of code 127, prolog size 7, PerfScore 42.00, instruction count 27, allocated bytes for code 127 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

+46 (+219.05%) : 1145.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

+46 (+219.05%) : 934.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-39 (-31.45%) : 6964.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1System.__Canon

@@ -7,83 +7,52 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T05] ( 3, 4 ) long -> rsi "spilling helperCall"
+; V02 tmp1 [V02,T03] ( 2, 4 ) long -> rsi "spilling helperCall"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T01] ( 4, 6 ) long -> rdi "VirtualCall with runtime lookup" -; V05 tmp4 [V05,T06] ( 2, 4 ) ref -> rcx single-def "argument with side effect" -; V06 rat0 [V06,T02] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" -; V07 rat1 [V07,T03] ( 3, 5.60) long -> rcx "spilling expr" -; V08 rat2 [V08,T04] ( 3, 4.48) long -> rdi "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T01] ( 3, 6 ) long -> rbx "VirtualCall with runtime lookup" +; V05 tmp4 [V05,T02] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M57211_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi
push rsi push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rcx
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
- ;; size=15 bbWeight=1 PerfScore 4.50 -G_M57211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rsi, qword ptr [rcx+0x10] - test rsi, rsi - je SHORT G_M57211_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M57211_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M57211_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M57211_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1 PerfScore 3.50 +G_M57211_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rsi, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M57211_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M57211_IG08 - ;; size=11 bbWeight=1 PerfScore 6.00 -G_M57211_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rcx+0x18] - test rdi, rdi - je SHORT G_M57211_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M57211_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M57211_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M57211_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdi, rax - ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M57211_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbx, rax
mov rcx, rsi call [System.Array:Empty[System.__Canon]():System.__Canon[]] ; gcrRegs +[rax] ; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx]
- mov r11, rdi
+ mov r11, rbx
cmp dword ptr [rcx], ecx
- mov rax, rdi
+ mov rax, rbx
; gcrRegs -[rax]
- ;; size=20 bbWeight=1 PerfScore 7.00 -G_M57211_IG10: ; bbWeight=1, epilog, nogc, extend - add rsp, 48
+ ;; size=62 bbWeight=1 PerfScore 10.50 +G_M57211_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 40
pop rbx pop rsi
- pop rdi
tail.jmp [rax]
- ;; size=10 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 124, prolog size 12, PerfScore 32.96, instruction count 37, allocated bytes for code 124 (MethodHash=f41c2084) for method System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
+; Total bytes of code 85, prolog size 11, PerfScore 17.25, instruction count 23, allocated bytes for code 85 (MethodHash=f41c2084) for method System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -91,12 +60,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-37 (-28.24%) : 1764.dasm - System.Text.Json.JsonSerializer:DeserializeSystem.__Canon:System.__Canon (FullOpts)

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def -; V01 arg0 [V01,T03] ( 3, 3 ) byref -> rsi single-def -; V02 arg1 [V02,T04] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T10] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rsi single-def +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T05] ( 2, 2 ) ref -> rdi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T08] ( 2, 4 ) long -> rcx "argument with side effect" -; V08 tmp4 [V08,T09] ( 2, 4 ) long -> rcx "argument with side effect" -; V09 rat0 [V09,T06] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T07] ( 3, 4 ) long -> rcx "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> rcx "spilling expr" -; V13 rat4 [V13,T05] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T03] ( 2, 4 ) long -> rcx "argument with side effect" +; V08 tmp4 [V08,T04] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 @@ -36,23 +31,12 @@ G_M58012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rdi, r8 ; gcrRegs +[rdi] ;; size=21 bbWeight=1 PerfScore 5.00
-G_M58012_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M58012_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M58012_IG03: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - jmp SHORT G_M58012_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M58012_IG04: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
+G_M58012_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M58012_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx] call [System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]] @@ -60,33 +44,18 @@ G_M58012_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, ; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi]
- mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M58012_IG08 - ;; size=23 bbWeight=1 PerfScore 9.50 -G_M58012_IG06: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - ; gcrRegs -[rax] - mov rcx, qword ptr [rcx+0x18] - test rcx, rcx - je SHORT G_M58012_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M58012_IG07: ; bbWeight=0.64, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz - jmp SHORT G_M58012_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M58012_IG08: ; bbWeight=0.36, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; gcrRegs -[rax]
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M58012_IG09: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
mov rdx, rsi ; byrRegs +[rdx] mov r8, rdi ; gcrRegs +[r8]
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M58012_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=60 bbWeight=1 PerfScore 7.50 +G_M58012_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx pop rsi @@ -95,7 +64,7 @@ G_M58012_IG10: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 131, prolog size 12, PerfScore 30.46, instruction count 38, allocated bytes for code 131 (MethodHash=cbe51d63) for method System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
+; Total bytes of code 94, prolog size 12, PerfScore 16.25, instruction count 26, allocated bytes for code 94 (MethodHash=cbe51d63) for method System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-37 (-27.41%) : 1525.dasm - System.Text.Json.JsonSerializer:SerializeSystem.__Canon:System.String (FullOpts)

@@ -7,20 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def
; V01 arg0 [V01 ] ( 3, 3 ) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-; V02 arg1 [V02,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Text.Json.JsonSerializerOptions> -; V03 loc0 [V03,T09] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
+; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Text.Json.JsonSerializerOptions> +; V03 loc0 [V03,T04] ( 2, 2 ) ref -> rsi class-hnd exact single-def <System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T07] ( 2, 4 ) long -> rcx "argument with side effect" -; V08 tmp4 [V08,T08] ( 2, 4 ) long -> rcx "argument with side effect" -; V09 rat0 [V09,T05] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T06] ( 3, 4 ) long -> rcx "runtime lookup" -; V12 rat3 [V12,T02] ( 3, 5.60) long -> rcx "spilling expr" -; V13 rat4 [V13,T04] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> rcx "argument with side effect" +; V08 tmp4 [V08,T03] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 40 @@ -34,23 +29,12 @@ G_M41289_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, r8 ; gcrRegs +[rsi] ;; size=22 bbWeight=1 PerfScore 4.75
-G_M41289_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M41289_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M41289_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M41289_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M41289_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M41289_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M41289_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] call [System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]] @@ -58,27 +42,12 @@ G_M41289_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rsi, rax ; gcrRegs +[rsi]
- mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M41289_IG08 - ;; size=23 bbWeight=1 PerfScore 9.50 -G_M41289_IG06: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rcx, qword ptr [rcx+0x18] - test rcx, rcx - je SHORT G_M41289_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M41289_IG07: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M41289_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M41289_IG08: ; bbWeight=0.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; gcrRegs -[rax]
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M41289_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rdx, [rsp+0x48] mov r8, rsi ; gcrRegs +[r8] @@ -86,15 +55,15 @@ G_M41289_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi r8] +[rax] ; gcr arg pop 0 nop
- ;; size=15 bbWeight=1 PerfScore 4.00 -G_M41289_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=69 bbWeight=1 PerfScore 11.00 +G_M41289_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 135, prolog size 11, PerfScore 32.21, instruction count 38, allocated bytes for code 135 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
+; Total bytes of code 98, prolog size 11, PerfScore 18.00, instruction count 26, allocated bytes for code 98 (MethodHash=6dd45eb6) for method System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
; ============================================================ Unwind Info:

+46 (+56.79%) : 5357.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)

@@ -8,14 +8,15 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 7.50) double -> mm0 single-def
+; V00 arg0 [V00,T01] ( 9, 8 ) double -> mm0 single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "folding static readonly field struct" <System.TimeSpan> ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp4 [V05,T00] ( 2, 1 ) long -> rax "field V02._ticks (fldOffset=0x0)" P-INDEP ;* V06 tmp5 [V06 ] ( 0, 0 ) long -> zero-ref "field V03._ticks (fldOffset=0x0)" P-INDEP
-; V07 cse0 [V07,T02] ( 3, 3 ) double -> mm1 "CSE - aggressive"
+; V07 tmp6 [V07,T02] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +; V08 cse0 [V08,T03] ( 3, 3 ) double -> mm1 "CSE - aggressive"
; ; Lcl frame size = 40 @@ -44,8 +45,14 @@ G_M20148_IG04: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M20148_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si rax, xmm0
- ;; size=5 bbWeight=0.50 PerfScore 3.00
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=51 bbWeight=0.50 PerfScore 10.25
G_M20148_IG06: ; bbWeight=0.50, epilog, nogc, extend add rsp, 40 ret @@ -57,9 +64,12 @@ G_M20148_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ;; size=7 bbWeight=0 PerfScore 0.00 RWD00 dq 43E0000000000000h ; 9.22337204e+18 RWD08 dq C3E0000000000000h ; -9.22337204e+18
+RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 81, prolog size 7, PerfScore 24.62, instruction count 21, allocated bytes for code 81 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
+; Total bytes of code 127, prolog size 7, PerfScore 31.88, instruction count 27, allocated bytes for code 127 (MethodHash=61e9b14b) for method System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
; ============================================================ Unwind Info:

+45 (+75.00%) : 686.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)

@@ -12,6 +12,8 @@ ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 32 @@ -36,17 +38,27 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr vxorps xmm1, xmm1, xmm1 vcvtsi2sd xmm1, xmm1, ebx vmulsd xmm0, xmm0, xmm1
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0
- ;; size=44 bbWeight=1 PerfScore 32.92
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1 + ;; size=89 bbWeight=1 PerfScore 47.42
G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75 RWD00 dq 3E00000000200000h ; 4.65661288e-10
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 8, PerfScore 37.17, instruction count 17, allocated bytes for code 60 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 51.67, instruction count 23, allocated bytes for code 105 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
; ============================================================ Unwind Info:

+46 (+219.05%) : 2581.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.windows.x64.checked.mch

-33 (-34.38%) : 10509.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x18], 0 - je SHORT G_M34046_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x18] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M34046_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] xor rdx, rdx ; gcrRegs +[rdx] @@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=16 bbWeight=1 PerfScore 4.75 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=39 bbWeight=1 PerfScore 8.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

-33 (-32.35%) : 1576.dasm - System.Linq.Enumerable:DistinctSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -20,26 +20,11 @@ G_M34864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp+0x10], rcx mov gword ptr [rbp+0x18], rdx ;; size=22 bbWeight=1 PerfScore 4.75
-G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M34864_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M34864_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M34864_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] mov rdx, gword ptr [rbp+0x18] ; gcrRegs +[rdx] @@ -48,14 +33,14 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx r8] +[rax] nop
- ;; size=18 bbWeight=1 PerfScore 5.50 -G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=41 bbWeight=1 PerfScore 8.75 +G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info:

-33 (-32.04%) : 11913.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__82[System.ValueTuple4[System.__Canon,System.Memory1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0)

@@ -22,40 +22,25 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp+0x18], rdx mov bword ptr [rbp+0x20], r8 ;; size=26 bbWeight=1 PerfScore 5.75
-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x18] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M49756_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x18] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M49756_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M49756_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x18] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M49756_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] mov rdx, bword ptr [rbp+0x20] ; byrRegs +[rdx] call [<unknown method>] ; byrRegs -[rdx] nop
- ;; size=15 bbWeight=1 PerfScore 5.25 -G_M49756_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=38 bbWeight=1 PerfScore 8.50 +G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 103, prolog size 14, PerfScore 26.80, instruction count 27, allocated bytes for code 103 (MethodHash=8be73da3) for method System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0)
+; Total bytes of code 70, prolog size 14, PerfScore 16.00, instruction count 18, allocated bytes for code 70 (MethodHash=8be73da3) for method System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:Start[System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref):this (Instrumented Tier0)
; ============================================================ Unwind Info:

+8 (+7.21%) : 16264.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,88 +9,82 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T05] ( 3, 3 ) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T02] ( 5, 4.20) long -> rdx single-def -; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rbx single-def
+; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T02] ( 5, 5 ) long -> rbx single-def +; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rsi single-def
; V03 loc0 [V03,T01] ( 7, 7 ) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T00] ( 4, 8 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
+ push rbp
push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rdx - mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, r8 - ; byrRegs +[rbx] - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rdx + mov rdi, rcx + ; gcrRegs +[rdi] + mov rbx, rdx + mov rsi, r8 + ; byrRegs +[rsi] + ;; size=22 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz + mov rax, gword ptr [rsi]
; gcrRegs +[rax] test rax, rax
- jne SHORT G_M58319_IG06 - mov rcx, qword ptr [rdx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M58319_IG04 - ;; size=21 bbWeight=1 PerfScore 8.50 -G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax] - jmp SHORT G_M58319_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M58319_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdx
+ jne SHORT G_M58319_IG03 + mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; gcrRegs -[rax]
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M58319_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - lea rcx, bword ptr [rdi+0x10] - ; byrRegs +[rcx] - mov rdx, rsi - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx rsi] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rbp, rax + ; gcrRegs +[rbp] + lea rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rdi] + ; byrRegs -[rcx] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rcx, rsi + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx]
xor r8, r8 ; gcrRegs +[r8] call <unknown method> ; gcrRegs -[rdx r8] +[rax]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rsi]
; gcr arg pop 0 test rax, rax
- cmove rax, rdi - ;; size=41 bbWeight=1 PerfScore 5.25 -G_M58319_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdi] - add rsp, 48
+ cmove rax, rbp + ;; size=88 bbWeight=1 PerfScore 11.75 +G_M58319_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbp] + add rsp, 40
pop rbx
+ pop rbp
pop rsi pop rdi ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 111, prolog size 12, PerfScore 23.20, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 119, prolog size 13, PerfScore 21.00, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -98,12 +92,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+8 (+7.21%) : 16720.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,90 +9,84 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 2.87) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T02] ( 5, 4.04) long -> rdx single-def -; V02 arg1 [V02,T03] ( 4, 3.87) byref -> rbx single-def -; V03 loc0 [V03,T01] ( 7, 6.47) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T04] ( 3, 2.87) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T01] ( 5, 4.73) long -> rbx single-def +; V02 arg1 [V02,T03] ( 4, 3.87) byref -> rsi single-def +; V03 loc0 [V03,T02] ( 7, 6.47) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 4, 6.93) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T00] ( 4, 6.93) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 3.47) long -> rcx "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 4.85) long -> rcx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
+ push rbp
push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rdx - mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, r8 - ; byrRegs +[rbx] - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rdx + mov rdi, rcx + ; gcrRegs +[rdi] + mov rbx, rdx + mov rsi, r8 + ; byrRegs +[rsi] + ;; size=22 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz + mov rax, gword ptr [rsi]
; gcrRegs +[rax] test rax, rax
- jne SHORT G_M58319_IG07
+ jne SHORT G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 3.25
-G_M58319_IG03: ; bbWeight=0.87, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.87, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
- mov rcx, qword ptr [rdx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.87 PerfScore 4.55 -G_M58319_IG04: ; bbWeight=0.69, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.69 PerfScore 1.39 -G_M58319_IG05: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdx
+ mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.17 PerfScore 0.30 -G_M58319_IG06: ; bbWeight=0.87, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - lea rcx, bword ptr [rdi+0x10] - ; byrRegs +[rcx] - mov rdx, rsi - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx rsi] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rbp, rax + ; gcrRegs +[rbp] + lea rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rdi] + ; byrRegs -[rcx] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rcx, rsi + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx]
xor r8, r8 ; gcrRegs +[r8] call <unknown method> ; gcrRegs -[rdx r8] +[rax]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rsi]
; gcr arg pop 0 test rax, rax
- cmove rax, rdi - ;; size=41 bbWeight=0.87 PerfScore 4.55 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdi] - add rsp, 48
+ cmove rax, rbp + ;; size=80 bbWeight=0.87 PerfScore 7.37 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbp] + add rsp, 40
pop rbx
+ pop rbp
pop rsi pop rdi ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 111, prolog size 12, PerfScore 21.54, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 119, prolog size 13, PerfScore 19.87, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -100,12 +94,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+8 (+7.21%) : 18476.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,90 +9,84 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.21) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.25) long -> rdx single-def -; V02 arg1 [V02,T01] ( 4, 3.21) byref -> rbx single-def
+; V00 this [V00,T02] ( 3, 2.21) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.41) long -> rbx single-def +; V02 arg1 [V02,T01] ( 4, 3.21) byref -> rsi single-def
; V03 loc0 [V03,T03] ( 7, 3.83) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.66) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.66) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 0.83) long -> rcx "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.16) long -> rcx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
+ push rbp
push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rdx - mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, r8 - ; byrRegs +[rbx] - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rdx + mov rdi, rcx + ; gcrRegs +[rdi] + mov rbx, rdx + mov rsi, r8 + ; byrRegs +[rsi] + ;; size=22 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz + mov rax, gword ptr [rsi]
; gcrRegs +[rax] test rax, rax
- jne SHORT G_M58319_IG07
+ jne SHORT G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 3.25
-G_M58319_IG03: ; bbWeight=0.21, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.21, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
- mov rcx, qword ptr [rdx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.21 PerfScore 1.09 -G_M58319_IG04: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.17 PerfScore 0.33 -G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdx
+ mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.04 PerfScore 0.07 -G_M58319_IG06: ; bbWeight=0.21, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - lea rcx, bword ptr [rdi+0x10] - ; byrRegs +[rcx] - mov rdx, rsi - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx rsi] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rbp, rax + ; gcrRegs +[rbp] + lea rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rdi] + ; byrRegs -[rcx] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rcx, rsi + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx]
xor r8, r8 ; gcrRegs +[r8] call <unknown method> ; gcrRegs -[rdx r8] +[rax]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rsi]
; gcr arg pop 0 test rax, rax
- cmove rax, rdi - ;; size=41 bbWeight=0.21 PerfScore 1.09 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdi] - add rsp, 48
+ cmove rax, rbp + ;; size=80 bbWeight=0.21 PerfScore 1.76 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbp] + add rsp, 40
pop rbx
+ pop rbp
pop rsi pop rdi ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 111, prolog size 12, PerfScore 13.33, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 119, prolog size 13, PerfScore 14.26, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -100,12 +94,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

benchmarks.run_tiered.windows.x64.checked.mch

-33 (-34.38%) : 3566.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:SingletonSystem.Canon,System.Canon:Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)

@@ -18,26 +18,11 @@ G_M34046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x18], 0 - je SHORT G_M34046_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M34046_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x18] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M34046_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M34046_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34046_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] xor rdx, rdx ; gcrRegs +[rdx] @@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=16 bbWeight=1 PerfScore 4.75 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=39 bbWeight=1 PerfScore 8.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 96 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 63, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 63 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

-33 (-32.35%) : 1537.dasm - System.Linq.Enumerable:DistinctSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -20,26 +20,11 @@ G_M34864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp+0x10], rcx mov gword ptr [rbp+0x18], rdx ;; size=22 bbWeight=1 PerfScore 4.75
-G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M34864_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M34864_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M34864_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34864_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] mov rdx, gword ptr [rbp+0x18] ; gcrRegs +[rdx] @@ -48,14 +33,14 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx r8] +[rax] nop
- ;; size=18 bbWeight=1 PerfScore 5.50 -G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=41 bbWeight=1 PerfScore 8.75 +G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=c3d577cf) for method System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info:

-33 (-32.04%) : 733.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -21,26 +21,11 @@ G_M56297_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp+0x10], rcx mov gword ptr [rbp+0x18], rdx ;; size=22 bbWeight=1 PerfScore 4.75
-G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M56297_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M56297_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x18], rax - jmp SHORT G_M56297_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M56297_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M56297_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x18], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea r8, [rbp-0x10] mov rcx, qword ptr [rbp-0x18] mov rdx, gword ptr [rbp+0x18] @@ -48,14 +33,14 @@ G_M56297_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M56297_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=42 bbWeight=1 PerfScore 9.00 +G_M56297_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 103, prolog size 14, PerfScore 26.30, instruction count 27, allocated bytes for code 103 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
+; Total bytes of code 70, prolog size 14, PerfScore 15.50, instruction count 18, allocated bytes for code 70 (MethodHash=51852416) for method System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info:

+8 (+7.21%) : 2095.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -8,90 +8,84 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 2.50) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> rdx single-def -; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rbx single-def
+; V00 this [V00,T03] ( 3, 2.50) ref -> rdi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4 ) long -> rbx single-def +; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rsi single-def
; V03 loc0 [V03,T02] ( 7, 5 ) ref -> rax class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V08 tmp3 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V09 rat0 [V09,T06] ( 3, 2 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 2.80) long -> rcx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M58319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
+ push rbp
push rbx
- sub rsp, 48 - mov qword ptr [rsp+0x28], rdx - mov rsi, rcx - ; gcrRegs +[rsi] - mov rbx, r8 - ; byrRegs +[rbx] - ;; size=18 bbWeight=1 PerfScore 4.75 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 40 + mov qword ptr [rsp+0x20], rdx + mov rdi, rcx + ; gcrRegs +[rdi] + mov rbx, rdx + mov rsi, r8 + ; byrRegs +[rsi] + ;; size=22 bbWeight=1 PerfScore 6.00 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref, isz + mov rax, gword ptr [rsi]
; gcrRegs +[rax] test rax, rax
- jne SHORT G_M58319_IG07
+ jne SHORT G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 3.25
-G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
- mov rcx, qword ptr [rdx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.50 PerfScore 2.62 -G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.40 PerfScore 0.80 -G_M58319_IG05: ; bbWeight=0.10, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - mov rcx, rdx
+ mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.10 PerfScore 0.18 -G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - lea rcx, bword ptr [rdi+0x10] - ; byrRegs +[rcx] - mov rdx, rsi - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx rsi] - ; byrRegs -[rcx] - mov rcx, rbx
+ mov rbp, rax + ; gcrRegs +[rbp] + lea rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx] mov rdx, rdi ; gcrRegs +[rdx]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rdx rdi] + ; byrRegs -[rcx] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rcx, rsi + ; byrRegs +[rcx] + mov rdx, rbp + ; gcrRegs +[rdx]
xor r8, r8 ; gcrRegs +[r8] call <unknown method> ; gcrRegs -[rdx r8] +[rax]
- ; byrRegs -[rcx rbx]
+ ; byrRegs -[rcx rsi]
; gcr arg pop 0 test rax, rax
- cmove rax, rdi - ;; size=41 bbWeight=0.50 PerfScore 2.62 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdi] - add rsp, 48
+ cmove rax, rbp + ;; size=80 bbWeight=0.50 PerfScore 4.25 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbp] + add rsp, 40
pop rbx
+ pop rbp
pop rsi pop rdi ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
-; Total bytes of code 111, prolog size 12, PerfScore 16.98, instruction count 35, allocated bytes for code 111 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 119, prolog size 13, PerfScore 16.75, instruction count 36, allocated bytes for code 119 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -99,12 +93,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+19 (+25.00%) : 17691.dasm - Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)

@@ -15,12 +15,13 @@ G_M2686_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp sub rsp, 48
+ vzeroupper
lea rbp, [rsp+0x30] xor eax, eax mov qword ptr [rbp-0x08], rax mov gword ptr [rbp+0x10], rcx mov bword ptr [rbp+0x18], rdx
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=27 bbWeight=1 PerfScore 6.00
G_M2686_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] @@ -28,24 +29,27 @@ G_M2686_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rcx] +[rax] mov gword ptr [rbp-0x08], rax
- mov r8, gword ptr [rbp-0x08] - ; gcrRegs +[r8]
+ mov rdx, gword ptr [rbp-0x08] + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; System.Nullable`1[System.DateTimeOffset] + call CORINFO_HELP_UNBOX + ; gcrRegs -[rax rdx] + ; byrRegs +[rax]
mov rcx, bword ptr [rbp+0x18] ; byrRegs +[rcx]
- mov rdx, 0xD1FFAB1E ; System.Nullable`1[System.DateTimeOffset] - call CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[rax r8] - ; byrRegs -[rcx]
+ vmovdqu xmm0, xmmword ptr [rax] + vmovdqu xmmword ptr [rcx], xmm0 + mov rdx, qword ptr [rax+0x10] + mov qword ptr [rcx+0x10], rdx
mov rax, bword ptr [rbp+0x18]
- ; byrRegs +[rax] - ;; size=46 bbWeight=1 PerfScore 9.50
+ ;; size=62 bbWeight=1 PerfScore 18.50
G_M2686_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 76, prolog size 16, PerfScore 16.25, instruction count 19, allocated bytes for code 76 (MethodHash=ebbbf581) for method Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
+; Total bytes of code 95, prolog size 19, PerfScore 26.25, instruction count 24, allocated bytes for code 95 (MethodHash=ebbbf581) for method Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
; ============================================================ Unwind Info:

+46 (+219.05%) : 9894.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-42 (-10.99%) : 502.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (FullOpts)

@@ -7,25 +7,20 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T05] ( 7, 4.88) long -> rsi single-def -; V01 arg0 [V01,T06] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T04] ( 5, 12 ) long -> rsi single-def +; V01 arg0 [V01,T05] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T01] ( 5, 19 ) ref -> rbx class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-; V03 arg2 [V03,T07] ( 4, 4 ) byref -> r14 single-def
+; V03 arg2 [V03,T06] ( 4, 4 ) byref -> r14 single-def
; V04 loc0 [V04,T02] ( 7, 20 ) ref -> [rbp-0x38] class-hnd EH-live single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 3, 17 ) ref -> rsi class-hnd <System.__Canon> -; V06 loc2 [V06,T13] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+; V05 loc1 [V05,T03] ( 3, 17 ) ref -> r15 class-hnd <System.__Canon> +; V06 loc2 [V06,T08] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op 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 ) long -> zero-ref "spilling helperCall"
-; V10 tmp2 [V10,T08] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
+; V10 tmp2 [V10,T07] ( 3, 6 ) long -> rax "VirtualCall with runtime lookup"
;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp4 [V12,T00] ( 3, 48 ) long -> r11 "VirtualCall with runtime lookup" -; V13 PSPSym [V13,T14] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V14 cse0 [V14,T04] ( 2, 8.50) long -> r15 hoist "CSE - aggressive" -; V15 rat0 [V15,T09] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable" -; V16 rat1 [V16,T12] ( 3, 2 ) long -> r15 "runtime lookup" -; V17 rat2 [V17,T10] ( 3, 2.80) long -> rcx "spilling expr" -; V18 rat3 [V18,T11] ( 3, 2.24) long -> r15 "fgMakeTemp is creating a new local variable"
+; V12 tmp4 [V12,T00] ( 3, 48 ) long -> rax "VirtualCall with runtime lookup" +; V13 PSPSym [V13,T09] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; ; Lcl frame size = 72 @@ -50,41 +45,29 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r14, r9 ; byrRegs +[r14] ;; size=43 bbWeight=1 PerfScore 11.00
-G_M62024_IG02: ; bbWeight=1, gcVars=0000000000002000 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz - ; GC ptr vars +{V06 V13}
+G_M62024_IG02: ; bbWeight=1, gcVars=0000000000000100 {V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref + ; GC ptr vars +{V06}
test rdi, rdi
- je G_M62024_IG21
+ je G_M62024_IG14
test rbx, rbx
- je G_M62024_IG22 - mov rcx, qword ptr [rsi+0x38] - mov r11, qword ptr [rcx+0x10] - test r11, r11 - je SHORT G_M62024_IG04 - ;; size=31 bbWeight=1 PerfScore 7.75 -G_M62024_IG03: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz - jmp SHORT G_M62024_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M62024_IG04: ; bbWeight=0.20, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
+ je G_M62024_IG15
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov r11, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M62024_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
mov rcx, rdi ; gcrRegs +[rcx]
- call [r11]
+ mov r11, rax + call [rax]
; gcrRegs -[rcx rdi] +[rax] ; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] mov gword ptr [rbp-0x38], rdi ; GC ptr vars +{V04}
- ;; size=13 bbWeight=1 PerfScore 4.50 -G_M62024_IG06: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+ ;; size=51 bbWeight=1 PerfScore 8.75 +G_M62024_IG03: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
; gcrRegs -[rax]
- ; GC ptr vars -{V13}
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; function address @@ -92,38 +75,22 @@ G_M62024_IG06: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax
- je SHORT G_M62024_IG14
+ je SHORT G_M62024_IG07
;; size=20 bbWeight=1 PerfScore 4.75
-G_M62024_IG07: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz - mov rcx, qword ptr [rsi+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M62024_IG10 - ;; size=11 bbWeight=0.50 PerfScore 3.00 -G_M62024_IG08: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz - mov r15, qword ptr [rcx+0x18] - test r15, r15 - je SHORT G_M62024_IG10 - ;; size=9 bbWeight=0.40 PerfScore 1.30 -G_M62024_IG09: ; bbWeight=0.32, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz - jmp SHORT G_M62024_IG11 - ;; size=2 bbWeight=0.32 PerfScore 0.64 -G_M62024_IG10: ; bbWeight=0.18, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
+G_M62024_IG04: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
mov rcx, rsi mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov r15, rax - ;; size=21 bbWeight=0.18 PerfScore 0.32 -G_M62024_IG11: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz - mov r11, r15
mov rcx, rdi ; gcrRegs +[rcx]
- call [r11]
+ mov r11, rax + call [rax]
; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov rsi, rax - ; gcrRegs +[rsi] - mov rdx, rsi
+ mov r15, rax + ; gcrRegs +[r15] + mov rdx, r15
; gcrRegs +[rdx] mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -131,28 +98,28 @@ G_M62024_IG11: ; bbWeight=8, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r1 ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax
- jne SHORT G_M62024_IG13
+ jne SHORT G_M62024_IG06
mov rcx, rdi ; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method>
- ; gcrRegs -[rcx rsi]
+ ; gcrRegs -[rcx r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M62024_IG11 - ;; size=46 bbWeight=8 PerfScore 120.00 -G_M62024_IG12: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz
+ jne SHORT G_M62024_IG04 + ;; size=63 bbWeight=8 PerfScore 132.00 +G_M62024_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M62024_IG14
+ jmp SHORT G_M62024_IG07
;; size=2 bbWeight=1 PerfScore 2.00
-G_M62024_IG13: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4000 {r14}, byref, isz - ; gcrRegs +[rsi]
+G_M62024_IG06: ; bbWeight=1, gcrefRegs=8080 {rdi r15}, byrefRegs=4000 {r14}, byref, isz + ; gcrRegs +[r15]
mov byte ptr [r14], 1
- mov gword ptr [rbp-0x40], rsi - jmp SHORT G_M62024_IG15
+ mov gword ptr [rbp-0x40], r15 + jmp SHORT G_M62024_IG08
;; size=10 bbWeight=1 PerfScore 4.00
-G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz - ; gcrRegs -[rsi]
+G_M62024_IG07: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0080 {rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz + ; gcrRegs -[r15]
; GC ptr vars -{V06} mov rcx, rdi ; gcrRegs +[rcx] @@ -161,25 +128,25 @@ G_M62024_IG14: ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=008 call [r11]<unknown method> ; gcrRegs -[rcx rdi] ; gcr arg pop 0
- jmp SHORT G_M62024_IG19
+ jmp SHORT G_M62024_IG12
;; size=18 bbWeight=1 PerfScore 5.50
-G_M62024_IG15: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG08: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] ; byrRegs -[r14]
- ; GC ptr vars +{V02 V04 V06 V13}
+ ; GC ptr vars +{V02 V04 V06}
mov rcx, rsp
- call G_M62024_IG23
+ call G_M62024_IG16
; gcrRegs -[rdi] ;; size=8 bbWeight=1 PerfScore 1.25
-G_M62024_IG16: ; bbWeight=1, nogc, extend
+G_M62024_IG09: ; bbWeight=1, nogc, extend
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M62024_IG17: ; bbWeight=1, gcVars=0000000000002000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02 V04 V13}
+G_M62024_IG10: ; bbWeight=1, gcVars=0000000000000100 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V02 V04}
mov rax, gword ptr [rbp-0x40] ; gcrRegs +[rax] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 72 pop rbx pop rsi @@ -189,7 +156,7 @@ G_M62024_IG18: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25
-G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref
+G_M62024_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, gcvars, byref
; gcrRegs -[rax] ; byrRegs +[r14] ; GC ptr vars -{V06} @@ -197,7 +164,7 @@ G_M62024_IG19: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { xor rax, rax ; gcrRegs +[rax] ;; size=6 bbWeight=1 PerfScore 1.25
-G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 72 pop rbx pop rsi @@ -207,7 +174,7 @@ G_M62024_IG20: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=13 bbWeight=1 PerfScore 4.25
-G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] ; byrRegs -[r14] mov ecx, 17 @@ -215,14 +182,14 @@ G_M62024_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M62024_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, 12 call [System.Linq.ThrowHelper:ThrowArgumentNullException(int)] ; gcr arg pop 0 int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M62024_IG23: ; bbWeight=1, gcVars=0000000000002004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V02 V04 V06 V13}
+G_M62024_IG16: ; bbWeight=1, gcVars=0000000000000104 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V02 V04 V06}
push rbp ...

+0 (0.00%) : 1.dasm - __GeneratedMainWrapper:Main():int (FullOpts)

@@ -37,13 +37,13 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ; gcr arg pop 0 mov ebx, eax mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax ; gcrRegs +[rsi] mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcr arg pop 0 mov rdi, rax ; gcrRegs +[rdi] @@ -52,7 +52,7 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre mov gword ptr [rdi+0x08], rcx mov rcx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[rcx]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcr arg pop 0 mov r14, rax ; gcrRegs +[r14] @@ -66,7 +66,7 @@ G_M2004_IG02: ; bbWeight=1.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre mov rcx, 0xD1FFAB1E ; code for <unknown method> mov qword ptr [r14+0x18], rcx mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rdi, rax

+0 (0.00%) : 9.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)

@@ -47,7 +47,7 @@ G_M36700_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; Xunit.Sdk.CollectionTracker
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_ISINSTANCEOFARRAY
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax @@ -65,7 +65,7 @@ G_M36700_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class>
- call [CORINFO_HELP_ISINSTANCEOFANY]
+ call [CORINFO_HELP_ISINSTANCEOFCLASS]
; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 mov rsi, rax @@ -77,7 +77,7 @@ G_M36700_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 G_M36700_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rsi] mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax @@ -97,7 +97,7 @@ G_M36700_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ;; size=45 bbWeight=0.50 PerfScore 3.12 G_M36700_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rcx, 0xD1FFAB1E ; Xunit.Sdk.CollectionTracker`1[System.Object]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rdi, rax @@ -132,7 +132,7 @@ G_M36700_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rax rdi] mov ecx, 0x1136 mov rdx, 0xD1FFAB1E
- call CORINFO_HELP_STRCNS
+ call CORINFO_HELP_NEWARR_1_ALIGN8
; gcrRegs +[rax] ; gcr arg pop 0 mov rcx, rax

+0 (0.00%) : 640.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (FullOpts)

@@ -368,7 +368,7 @@ G_M35644_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=35 bbWeight=1.00 PerfScore 10.88 G_M35644_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov rcx, 0xD1FFAB1E ; System.Text.StringBuilder
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax @@ -376,7 +376,7 @@ G_M35644_IG02: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, mov dword ptr [rsi+0x20], 0xD1FFAB1E mov rcx, 0xD1FFAB1E ; ushort[] mov edx, 16
- call CORINFO_HELP_NEWARR_1_VC
+ call CORINFO_HELP_NEWARR_1_OBJ
; gcr arg pop 0 lea rcx, bword ptr [rsi+0x08] ; byrRegs +[rcx]

+0 (0.00%) : 940.dasm - Helper:.cctor() (FullOpts)

@@ -59,7 +59,7 @@ G_M23136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M23136_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; System.Action`1[System.Runtime.Loader.AssemblyLoadContext]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax

+0 (0.00%) : 2252.dasm - Helper:.cctor() (FullOpts)

@@ -59,7 +59,7 @@ G_M23136_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M23136_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; System.Action`1[System.Runtime.Loader.AssemblyLoadContext]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] ; gcr arg pop 0 mov rsi, rax

libraries.pmi.windows.x64.checked.mch

-43 (-32.82%) : 8483.dasm - Microsoft.FSharp.Collections.SetTreeModule:currentSystem.__Canon:System.__Canon (FullOpts)

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 7, 3 ) long -> rcx single-def
+; V00 TypeCtx [V00,T01] ( 5, 3 ) long -> rcx single-def
; V01 arg0 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]> ; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 rat0 [V07,T03] ( 3, 0 ) long -> rdx "runtime lookup" -; V08 rat1 [V08,T04] ( 3, 0 ) long -> rdx "spilling expr" -; V09 rat2 [V09,T05] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" -; V10 rat3 [V10,T06] ( 3, 0 ) long -> rdx "runtime lookup" -; V11 rat4 [V11,T07] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -29,7 +24,7 @@ G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] cmp byte ptr [rdx+0x10], 0
- je SHORT G_M34926_IG07
+ je SHORT G_M34926_IG05
mov rax, gword ptr [rdx+0x08] ; gcrRegs +[rax] cmp gword ptr [rax+0x10], 0 @@ -41,51 +36,29 @@ G_M34926_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
- mov rdx, qword ptr [rcx+0x38] - cmp qword ptr [rdx+0x08], 24 - jle SHORT G_M34926_IG05 - mov rdx, qword ptr [rdx+0x18] - test rdx, rdx - je SHORT G_M34926_IG05 - jmp SHORT G_M34926_IG06 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M34926_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx
+ mov rcx, rax
call [Microsoft.FSharp.Collections.SetTreeModule:alreadyFinished[System.__Canon]():System.__Canon] ; gcrRegs +[rax] ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00 -G_M34926_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M34926_IG08 - jmp SHORT G_M34926_IG09 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M34926_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M34926_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx
+ mov rcx, rax
call [Microsoft.FSharp.Collections.SetTreeModule:notStarted[System.__Canon]():System.__Canon] ; gcrRegs +[rax] ; gcr arg pop 0 int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 9, PerfScore 16.50, instruction count 34, allocated bytes for code 131 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
+; Total bytes of code 88, prolog size 9, PerfScore 16.50, instruction count 20, allocated bytes for code 88 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-18 (-32.73%) : 15529.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOneSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -19,31 +17,19 @@ G_M25175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M25175_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M25175_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M25175_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M25175_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M25175_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M25175_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rcx, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M25175_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 tail.jmp [Microsoft.FSharp.Core.LanguagePrimitives:GenericOneDynamic[System.__Canon]():System.__Canon] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-18 (-32.73%) : 15849.dasm - Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstanceSystem.__Canon:System.__Canon (FullOpts)

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -19,31 +17,19 @@ G_M5834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M5834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M5834_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M5834_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M5834_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M5834_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M5834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M5834_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M5834_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rcx, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M5834_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 tail.jmp [System.Activator:CreateInstance[System.__Canon]():System.__Canon] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=8fe2e935) for method Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=8fe2e935) for method Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info:

+45 (+62.50%) : 10978.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.Canon,System.Nullable1[int]]:Invoke(System.Collections.Generic.KeyValuePair2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox1[System.Nullable1[int]],System.Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)

@@ -17,11 +17,13 @@ ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon> ;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V08 tmp6 [V08,T05] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"
-;* V09 cse0 [V09,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V10 cse1 [V10,T06] ( 4, 3 ) int -> rdx "CSE - aggressive" -;* V11 rat0 [V11,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" -;* V12 rat1 [V12,T04] ( 0, 0 ) long -> zero-ref "runtime lookup" -;* V13 rat2 [V13,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 tmp7 [V09,T08] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V10 tmp8 [V10,T09] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +;* V11 cse0 [V11,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V12 cse1 [V12,T06] ( 4, 3 ) int -> rdx "CSE - aggressive" +;* V13 rat0 [V13,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V14 rat1 [V14,T04] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V15 rat2 [V15,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 48 @@ -49,14 +51,20 @@ G_M41213_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08] vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0 ; gcrRegs -[rax]
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, edx jle SHORT G_M41213_IG04 call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=35 bbWeight=0.50 PerfScore 13.29
+ ;; size=80 bbWeight=0.50 PerfScore 20.54
G_M41213_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor rax, rax ; gcrRegs +[rax] @@ -67,9 +75,13 @@ G_M41213_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75 RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 72, prolog size 13, PerfScore 27.04, instruction count 22, allocated bytes for code 72 (MethodHash=cfd55f02) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 117, prolog size 13, PerfScore 34.29, instruction count 28, allocated bytes for code 117 (MethodHash=cfd55f02) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================ Unwind Info:

+45 (+75.00%) : 10981.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable1[int]]:Invoke(System.Collections.Generic.KeyValuePair2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox1[System.Nullable1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)

@@ -15,7 +15,9 @@ ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon> ;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V06 tmp4 [V06,T01] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"
-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"
+; V07 tmp5 [V07,T03] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V08 tmp6 [V08,T04] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +; V09 cse0 [V09,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,14 +40,20 @@ G_M21751_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08] vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0 ; gcrRegs -[rax]
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, edx jle SHORT G_M21751_IG04 call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=35 bbWeight=0.50 PerfScore 13.29
+ ;; size=80 bbWeight=0.50 PerfScore 20.54
G_M21751_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor rax, rax ; gcrRegs +[rax] @@ -55,9 +63,13 @@ G_M21751_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=5 bbWeight=1 PerfScore 1.25 RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 7, PerfScore 21.29, instruction count 17, allocated bytes for code 60 (MethodHash=1fe8ab08) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 105, prolog size 7, PerfScore 28.54, instruction count 23, allocated bytes for code 105 (MethodHash=1fe8ab08) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================ Unwind Info:

+45 (+75.00%) : 10960.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable1[int]]:Invoke(System.Collections.Generic.KeyValuePair2[System.Nullable1[int],System.Collections.Generic.List1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)

@@ -15,7 +15,9 @@ ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon> ;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V06 tmp4 [V06,T01] ( 4, 3 ) ref -> rcx single-def "V01.[000..008)"
-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"
+; V07 tmp5 [V07,T03] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V08 tmp6 [V08,T04] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +; V09 cse0 [V09,T02] ( 4, 3 ) int -> rdx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -38,14 +40,20 @@ G_M53962_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08] vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0 ; gcrRegs -[rax]
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, edx jle SHORT G_M53962_IG04 call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=35 bbWeight=0.50 PerfScore 13.29
+ ;; size=80 bbWeight=0.50 PerfScore 20.54
G_M53962_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref xor rax, rax ; gcrRegs +[rax] @@ -55,9 +63,13 @@ G_M53962_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=5 bbWeight=1 PerfScore 1.25 RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 7, PerfScore 21.29, instruction count 17, allocated bytes for code 60 (MethodHash=926d2d35) for method Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 105, prolog size 7, PerfScore 28.54, instruction count 23, allocated bytes for code 105 (MethodHash=926d2d35) for method Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-33 (-36.26%) : 141.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M41558_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M41558_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] call [<unknown method>] ; gcrRegs +[rax] nop
- ;; size=11 bbWeight=1 PerfScore 4.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=34 bbWeight=1 PerfScore 7.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info:

-33 (-36.26%) : 1713.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -18,38 +18,23 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x08], rcx mov qword ptr [rbp+0x10], rcx ;; size=18 bbWeight=1 PerfScore 3.75
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M41558_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M41558_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] call [<unknown method>] ; gcrRegs +[rax] nop
- ;; size=11 bbWeight=1 PerfScore 4.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=34 bbWeight=1 PerfScore 7.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 91, prolog size 14, PerfScore 23.80, instruction count 24, allocated bytes for code 91 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
+; Total bytes of code 58, prolog size 14, PerfScore 13.00, instruction count 15, allocated bytes for code 58 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
; ============================================================ Unwind Info:

-33 (-32.35%) : 8515.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:GetSystem.__Canon:System.__Canon (Tier0)

@@ -20,26 +20,11 @@ G_M39284_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp+0x10], rcx mov gword ptr [rbp+0x18], rdx ;; size=22 bbWeight=1 PerfScore 4.75
-G_M39284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M39284_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M39284_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rax, qword ptr [rbp+0x10] - mov rax, qword ptr [rax+0x38] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x10], rax - jmp SHORT G_M39284_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M39284_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp+0x10] mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x10], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M39284_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbp-0x10] mov rdx, gword ptr [rbp+0x18] ; gcrRegs +[rdx] @@ -48,14 +33,14 @@ G_M39284_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx r8] +[rax] nop
- ;; size=18 bbWeight=1 PerfScore 5.50 -G_M39284_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=41 bbWeight=1 PerfScore 8.75 +G_M39284_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 102, prolog size 14, PerfScore 26.05, instruction count 27, allocated bytes for code 102 (MethodHash=42cc668b) for method Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0)
+; Total bytes of code 69, prolog size 14, PerfScore 15.25, instruction count 18, allocated bytes for code 69 (MethodHash=42cc668b) for method Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0)
; ============================================================ Unwind Info:

+3 (+1.67%) : 2895.dasm - System.PlatformDetection+<>c:<.cctor>b_5095():ubyte:this (Tier0)

@@ -69,23 +69,26 @@ G_M22456_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=16 bbWeight=1 PerfScore 5.25 G_M22456_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rax]
- lea rcx, [rbp-0x08] - mov r8, gword ptr [rbp-0x30] - ; gcrRegs +[r8] - mov rdx, 0xD1FFAB1E ; System.Nullable`1[ubyte] - call CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[r8]
+ mov rdx, gword ptr [rbp-0x30] + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; System.Nullable`1[ubyte] + call CORINFO_HELP_UNBOX + ; gcrRegs -[rdx] + ; byrRegs +[rax] + mov ax, word ptr [rax] + ; byrRegs -[rax] + mov word ptr [rbp-0x08], ax
lea rcx, [rbp-0x08] call [<unknown method>] nop
- ;; size=34 bbWeight=1 PerfScore 6.50
+ ;; size=37 bbWeight=1 PerfScore 9.00
G_M22456_IG06: ; bbWeight=1, epilog, nogc, extend add rsp, 80 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 180, prolog size 24, PerfScore 46.83, instruction count 43, allocated bytes for code 180 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
+; Total bytes of code 183, prolog size 24, PerfScore 49.33, instruction count 44, allocated bytes for code 183 (MethodHash=12a7a847) for method System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
; ============================================================ Unwind Info:

+46 (+219.05%) : 11630.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
; ============================================================ Unwind Info:

+46 (+219.05%) : 1552.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-18 (-32.73%) : 2202.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -19,31 +17,19 @@ G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M41558_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M41558_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M41558_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M41558_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rcx, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

-37 (-28.91%) : 2283.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilderSystem.ValueTuple3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray1+Builder[System.ValueTuple`3[int,int,System.__Canon]

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 7, 5.56) long -> rbx single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx single-def
; V01 loc0 [V01 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]> ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V05 tmp3 [V05 ] ( 2, 2 ) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.array (fldOffset=0x0)" P-DEP
-; V06 tmp4 [V06,T06] ( 2, 4 ) long -> rdx "argument with side effect" -; V07 rat0 [V07,T04] ( 3, 4 ) long -> rcx "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable" -; V09 rat2 [V09,T05] ( 3, 4 ) long -> rdx "runtime lookup" -; V10 rat3 [V10,T02] ( 3, 5.60) long -> rcx "spilling expr" -; V11 rat4 [V11,T03] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
+; V06 tmp4 [V06,T01] ( 2, 4 ) long -> rdx "argument with side effect"
; ; Lcl frame size = 48 @@ -30,61 +25,35 @@ G_M7461_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x28], rcx mov rbx, rcx ;; size=20 bbWeight=1 PerfScore 3.75
-G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M7461_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M7461_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M7461_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M7461_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7461_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M7461_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call [System.Collections.Immutable.ImmutableArray:Create[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]] ; gcrRegs +[rax] ; gcr arg pop 0 mov gword ptr [rsp+0x20], rax
- mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M7461_IG08 - ;; size=22 bbWeight=1 PerfScore 10.00 -G_M7461_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - mov rdx, qword ptr [rcx+0x18] - test rdx, rdx - je SHORT G_M7461_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M7461_IG07: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M7461_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M7461_IG08: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; gcrRegs -[rax]
; gcr arg pop 0 mov rdx, rax
- ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M7461_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rsp+0x20] call [System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`3[int,int,System.__Canon]]:ToBuilder():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]]:this] ; gcrRegs +[rax] ; gcr arg pop 0 nop
- ;; size=12 bbWeight=1 PerfScore 3.75 -G_M7461_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=65 bbWeight=1 PerfScore 11.25 +G_M7461_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 128, prolog size 17, PerfScore 30.96, instruction count 34, allocated bytes for code 128 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
+; Total bytes of code 91, prolog size 17, PerfScore 16.75, instruction count 22, allocated bytes for code 91 (MethodHash=7a1ee2da) for method System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
; ============================================================ Unwind Info:

-18 (-28.57%) : 4674.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutableSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -7,13 +7,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp2 [V04,T04] ( 2, 4 ) long -> rcx "argument with side effect" -; V05 rat0 [V05,T03] ( 3, 4 ) long -> rcx "runtime lookup" -; V06 rat1 [V06,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V04 tmp2 [V04,T02] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 @@ -24,34 +22,22 @@ G_M39678_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdx ; gcrRegs +[rbx] ;; size=13 bbWeight=1 PerfScore 2.50
-G_M39678_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rax, qword ptr [rdx+0x10] - test rax, rax - je SHORT G_M39678_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M39678_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rcx, rax - jmp SHORT G_M39678_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M39678_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M39678_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rcx, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M39678_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx ; gcrRegs +[rdx]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M39678_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=21 bbWeight=1 PerfScore 1.75 +G_M39678_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx tail.jmp [System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]] ; gcr arg pop 0 ;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 63, prolog size 13, PerfScore 12.85, instruction count 17, allocated bytes for code 63 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
+; Total bytes of code 45, prolog size 13, PerfScore 7.00, instruction count 11, allocated bytes for code 45 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

+15 (+15.79%) : 8714.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -9,61 +9,57 @@ ; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 5, 5 ) byref -> rsi single-def
-; V01 TypeCtx [V01,T02] ( 5, 4.20) long -> rdx single-def
+; V01 TypeCtx [V01,T02] ( 5, 5 ) long -> rdi single-def
; V02 arg0 [V02,T00] ( 4, 8 ) byref -> rbx single-def
-; V03 arg1 [V03,T05] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String>
+; V03 arg1 [V03,T04] ( 3, 3 ) ref -> rbp class-hnd single-def <System.String>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T03] ( 4, 6 ) long -> r11 "VirtualCall with runtime lookup"
+; V06 tmp2 [V06,T03] ( 3, 6 ) long -> r14 "VirtualCall with runtime lookup"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]> ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.IIncrementalGeneratorNode`1[System.__Canon]> ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref "field V02.Node (fldOffset=0x0)" P-INDEP ;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "field V02.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-; V13 tmp9 [V13,T06] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP -; V14 tmp10 [V14,T07] ( 2, 2 ) ubyte -> rbx "field V07.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+; V13 tmp9 [V13,T05] ( 2, 2 ) ref -> rax single-def "field V07.Node (fldOffset=0x0)" P-INDEP +; V14 tmp10 [V14,T06] ( 2, 2 ) ubyte -> rbx "field V07.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
-; V16 rat0 [V16,T04] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 48 G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi push rsi
+ push rbp
push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rdx mov rsi, rcx ; byrRegs +[rsi]
+ mov rdi, rdx
mov rbx, r8 ; byrRegs +[rbx]
- mov rdi, r9 - ; gcrRegs +[rdi] - ;; size=21 bbWeight=1 PerfScore 5.00 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz - mov rcx, qword ptr [rdx+0x38] - mov r11, qword ptr [rcx+0x10] - test r11, r11 - je SHORT G_M18340_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref, isz - jmp SHORT G_M18340_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref - mov rcx, rdx
+ mov rbp, r9 + ; gcrRegs +[rbp] + ;; size=27 bbWeight=1 PerfScore 7.25 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=0020 {rbp}, byrefRegs=0048 {rbx rsi}, byref + mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov r14, rax + mov rcx, rdi + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov r11, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rsi}, byref
mov rcx, gword ptr [rbx] ; gcrRegs +[rcx]
- mov rdx, rdi
+ mov r11, r14 + mov rdx, rbp
; gcrRegs +[rdx]
- call [r11] - ; gcrRegs -[rcx rdx rdi] +[rax]
+ call [r14] + ; gcrRegs -[rcx rdx rbp] +[rax]
; gcr arg pop 0 movzx rbx, byte ptr [rbx+0x08] ; byrRegs -[rbx] @@ -77,16 +73,18 @@ G_M18340_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rs mov byte ptr [rsi+0x08], bl mov rax, rsi ; byrRegs +[rax]
- ;; size=30 bbWeight=1 PerfScore 10.00 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=72 bbWeight=1 PerfScore 13.50 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx
+ pop rbp
pop rsi pop rdi
+ pop r14
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 95, prolog size 12, PerfScore 24.95, instruction count 31, allocated bytes for code 95 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
+; Total bytes of code 110, prolog size 15, PerfScore 24.50, instruction count 35, allocated bytes for code 110 (MethodHash=1406b85b) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -94,12 +92,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)

+13 (+20.31%) : 6398.dasm - System.Collections.Immutable.ImmutableArray1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -8,59 +8,55 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) byref -> rbx this single-def -; V01 TypeCtx [V01,T00] ( 5, 4.20) long -> rdx single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> rsi this single-def +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V03 tmp1 [V03,T02] ( 2, 4 ) long -> rdi "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V07 tmp5 [V07,T05] ( 2, 2 ) ref -> rax single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V08 tmp6 [V08,T04] ( 2, 4 ) long -> rcx "argument with side effect" -; V09 rat0 [V09,T03] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rcx "fgMakeTemp is creating a new local variable"
+; V07 tmp5 [V07,T03] ( 2, 2 ) ref -> rax single-def "field V04.array (fldOffset=0x0)" P-INDEP
; ; Lcl frame size = 48 G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi + push rsi
push rbx sub rsp, 48 mov qword ptr [rsp+0x28], rdx
- mov rbx, rcx - ; byrRegs +[rbx] - ;; size=13 bbWeight=1 PerfScore 2.50 -G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rcx, qword ptr [rdx+0x38] - mov rcx, qword ptr [rcx+0x10] - test rcx, rcx - je SHORT G_M44373_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M44373_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M44373_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M44373_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - mov rcx, rdx
+ mov rsi, rcx + ; byrRegs +[rsi] + mov rbx, rdx + ;; size=18 bbWeight=1 PerfScore 4.75 +G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref + mov rcx, rbx
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rcx, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - mov rdx, gword ptr [rbx]
+ mov rdi, rax + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rdx, gword ptr [rsi]
; gcrRegs +[rdx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ mov rcx, rdi + call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rdx] +[rax]
- ; byrRegs -[rbx]
+ ; byrRegs -[rsi]
; gcr arg pop 0 nop
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=51 bbWeight=1 PerfScore 6.75 +G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx
+ pop rsi + pop rdi
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 64, prolog size 10, PerfScore 14.70, instruction count 19, allocated bytes for code 64 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 77, prolog size 12, PerfScore 14.25, instruction count 23, allocated bytes for code 77 (MethodHash=e6fb52aa) for method System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,10 +64,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+45 (+20.55%) : 848.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)

@@ -14,8 +14,8 @@ ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
-; V06 tmp2 [V06,T10] ( 4, 1.50) double -> mm0 "Inline return value spill temp" -; V07 tmp3 [V07,T09] ( 4, 3 ) double -> mm0 single-def "Inline stloc first use temp"
+; V06 tmp2 [V06,T12] ( 4, 1.50) double -> mm0 "Inline return value spill temp" +; V07 tmp3 [V07,T11] ( 4, 3 ) double -> mm0 single-def "Inline stloc first use temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" @@ -29,8 +29,10 @@ ; V18 tmp14 [V18,T04] ( 2, 8 ) long -> rcx "field V09._dateData (fldOffset=0x0)" P-INDEP ; V19 tmp15 [V19,T05] ( 2, 8 ) long -> rax "field V11._ticks (fldOffset=0x0)" P-INDEP ; V20 tmp16 [V20,T06] ( 2, 8 ) long -> rcx "field V13._ticks (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T03] ( 2, 9 ) long -> rbp hoist "CSE - aggressive" -; V22 cse1 [V22,T07] ( 3, 6 ) long -> rdi hoist "CSE - aggressive"
+; V21 tmp17 [V21,T09] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V22 tmp18 [V22,T10] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +; V23 cse0 [V23,T03] ( 2, 9 ) long -> rbp hoist "CSE - aggressive" +; V24 cse1 [V24,T07] ( 3, 6 ) long -> rdi hoist "CSE - aggressive"
; ; Lcl frame size = 32 @@ -62,10 +64,16 @@ G_M23588_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr vdivsd xmm0, xmm0, qword ptr [reloc @RWD24] vmovups xmm1, xmmword ptr [reloc @RWD32] vmaxsd xmm0, xmm1, xmm0
- vcvttsd2si esi, xmm0
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD48], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD64], 13 + vmovups xmm2, xmmword ptr [reloc @RWD80] + vcvttsd2si ecx, xmm0 + vpbroadcastd xmm0, ecx + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd esi, xmm1
mov rdi, qword ptr [rbx] mov rbp, qword ptr [rdi+0x50]
- ;; size=31 bbWeight=1 PerfScore 30.00
+ ;; size=76 bbWeight=1 PerfScore 44.50
G_M23588_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -125,9 +133,12 @@ RWD08 dq 430A36E2EB1C4328h ; 9.22337204e+14 RWD16 dq C30A36E2EB1C4328h ; -9.22337204e+14 RWD24 dq 4024000000000000h ; 10 RWD32 dq 408F400000000000h, 0000000000000000h
+RWD48 dq 0000000000000088h, 0000000000000000h +RWD64 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD80 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 219, prolog size 13, PerfScore 181.58, instruction count 56, allocated bytes for code 219 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
+; Total bytes of code 264, prolog size 13, PerfScore 196.08, instruction count 62, allocated bytes for code 264 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
; ============================================================ Unwind Info:

realworld.run.windows.x64.checked.mch

-43 (-32.82%) : 12356.dasm - Microsoft.FSharp.Collections.SetTreeModule:currentSystem.__Canon:System.__Canon (FullOpts)

@@ -7,18 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T01] ( 7, 3 ) long -> rcx single-def
+; V00 TypeCtx [V00,T01] ( 5, 3 ) long -> rcx single-def
; V01 arg0 [V01,T00] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]> ; V02 loc0 [V02,T02] ( 3, 3 ) ref -> rax class-hnd exact single-def <<unknown class>> ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 rat0 [V07,T03] ( 3, 0 ) long -> rdx "runtime lookup" -; V08 rat1 [V08,T04] ( 3, 0 ) long -> rdx "spilling expr" -; V09 rat2 [V09,T05] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable" -; V10 rat3 [V10,T06] ( 3, 0 ) long -> rdx "runtime lookup" -; V11 rat4 [V11,T07] ( 3, 0 ) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -29,7 +24,7 @@ G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] cmp byte ptr [rdx+0x10], 0
- je SHORT G_M34926_IG07
+ je SHORT G_M34926_IG05
mov rax, gword ptr [rdx+0x08] ; gcrRegs +[rax] cmp gword ptr [rax+0x10], 0 @@ -41,51 +36,29 @@ G_M34926_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 40 ret ;; size=5 bbWeight=1 PerfScore 1.25
-G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M34926_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdx]
- mov rdx, qword ptr [rcx+0x38] - cmp qword ptr [rdx+0x08], 24 - jle SHORT G_M34926_IG05 - mov rdx, qword ptr [rdx+0x18] - test rdx, rdx - je SHORT G_M34926_IG05 - jmp SHORT G_M34926_IG06 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M34926_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx
+ mov rcx, rax
call [Microsoft.FSharp.Collections.SetTreeModule:alreadyFinished[System.__Canon]():System.__Canon] ; gcrRegs +[rax] ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00 -G_M34926_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0 PerfScore 0.00 +G_M34926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M34926_IG08 - jmp SHORT G_M34926_IG09 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M34926_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M34926_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx
+ mov rcx, rax
call [Microsoft.FSharp.Collections.SetTreeModule:notStarted[System.__Canon]():System.__Canon] ; gcrRegs +[rax] ; gcr arg pop 0 int3
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=25 bbWeight=0 PerfScore 0.00
-; Total bytes of code 131, prolog size 9, PerfScore 16.50, instruction count 34, allocated bytes for code 131 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
+; Total bytes of code 88, prolog size 9, PerfScore 16.50, instruction count 20, allocated bytes for code 88 (MethodHash=f4987791) for method Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
; ============================================================ Unwind Info:

-18 (-32.73%) : 13766.dasm - System.Linq.Enumerable:EmptySystem.Collections.Generic.KeyValuePair2[System.__Canon,int]]():System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -19,31 +17,19 @@ G_M43414_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M43414_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M43414_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M43414_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M43414_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M43414_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43414_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M43414_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M43414_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rcx, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M43414_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 tail.jmp [System.Array:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.KeyValuePair`2[System.__Canon,int][]] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=4ae05669) for method System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=4ae05669) for method System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
; ============================================================ Unwind Info:

-18 (-32.73%) : 11071.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -7,11 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rcx single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rcx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V03 rat0 [V03,T02] ( 3, 4 ) long -> rdx "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -19,31 +17,19 @@ G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 mov qword ptr [rsp+0x20], rcx ;; size=9 bbWeight=1 PerfScore 1.25
-G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rdx, qword ptr [rdx+0x10] - test rdx, rdx - je SHORT G_M15963_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M15963_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M15963_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M15963_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rdx - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rcx, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 tail.jmp [Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]:get_EmptyEnumerable():Microsoft.FSharp.Collections.IEnumerator+EmptyEnumerable`1[System.__Canon]] ; gcr arg pop 0 ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 55, prolog size 9, PerfScore 10.90, instruction count 13, allocated bytes for code 55 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 37, prolog size 9, PerfScore 5.00, instruction count 7, allocated bytes for code 37 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

+45 (+62.50%) : 3809.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.Canon,System.Canon]:Invoke(System.Collections.Generic.KeyValuePair2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox1[System.Canon],System.Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)

@@ -19,12 +19,14 @@ ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref "field V01.value (fldOffset=0x0)" P-INDEP ;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref "field V01.key (fldOffset=0x8)" P-INDEP ;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]>
-;* V11 cse0 [V11,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V12 cse1 [V12,T05] ( 4, 3 ) int -> rdx "CSE - aggressive" -; V13 cse2 [V13,T07] ( 3, 2.50) ref -> rcx "CSE - aggressive" -;* V14 rat0 [V14,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" -;* V15 rat1 [V15,T04] ( 0, 0 ) long -> zero-ref "runtime lookup" -;* V16 rat2 [V16,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 tmp9 [V11,T09] ( 3, 3 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V12 tmp10 [V12,T10] ( 3, 3 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable" +;* V13 cse0 [V13,T08] ( 0, 0 ) long -> zero-ref "CSE - aggressive" +; V14 cse1 [V14,T05] ( 4, 3 ) int -> rdx "CSE - aggressive" +; V15 cse2 [V15,T07] ( 3, 2.50) ref -> rcx "CSE - aggressive" +;* V16 rat0 [V16,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree" +;* V17 rat1 [V17,T04] ( 0, 0 ) long -> zero-ref "runtime lookup" +;* V18 rat2 [V18,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 48 @@ -52,14 +54,20 @@ G_M51837_IG03: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rax+0x08] vmulsd xmm0, xmm0, qword ptr [reloc @RWD00]
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0 ; gcrRegs -[rax]
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, edx jle SHORT G_M51837_IG04 call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this] ; gcrRegs -[rcx] ; gcr arg pop 0
- ;; size=35 bbWeight=0.50 PerfScore 13.29
+ ;; size=80 bbWeight=0.50 PerfScore 20.54
G_M51837_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor rax, rax ; gcrRegs +[rax] @@ -70,9 +78,13 @@ G_M51837_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 1.75 RWD00 dq 3FECCCCCCCCCCCCDh ; 0.9
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 72, prolog size 13, PerfScore 27.04, instruction count 22, allocated bytes for code 72 (MethodHash=91e33582) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 117, prolog size 13, PerfScore 34.29, instruction count 28, allocated bytes for code 117 (MethodHash=91e33582) for method Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================ Unwind Info:

+45 (+75.00%) : 671.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)

@@ -12,6 +12,8 @@ ; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def ; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V04 tmp2 [V04,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V05 tmp3 [V05,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 32 @@ -36,17 +38,27 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr vxorps xmm1, xmm1, xmm1 vcvtsi2sd xmm1, xmm1, ebx vmulsd xmm0, xmm0, xmm1
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD16], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD32], 13 + vmovups xmm2, xmmword ptr [reloc @RWD48]
vcvttsd2si eax, xmm0
- ;; size=44 bbWeight=1 PerfScore 32.92
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1 + ;; size=89 bbWeight=1 PerfScore 47.42
G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 32 pop rbx ret ;; size=6 bbWeight=1 PerfScore 1.75 RWD00 dq 3E00000000200000h ; 4.65661288e-10
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD48 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 60, prolog size 8, PerfScore 37.17, instruction count 17, allocated bytes for code 60 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
+; Total bytes of code 105, prolog size 8, PerfScore 51.67, instruction count 23, allocated bytes for code 105 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
; ============================================================ Unwind Info:

+46 (+219.05%) : 5319.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)

@@ -14,6 +14,8 @@ ;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.TimeSpan> ;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V05 tmp3 [V05,T02] ( 2, 2 ) long -> rax "field V03._ticks (fldOffset=0x0)" P-INDEP
+; V06 tmp4 [V06,T03] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp5 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,13 +26,23 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sub rdx, rcx vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rdx
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttsd2si rax, xmm0
- ;; size=17 bbWeight=1 PerfScore 12.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=63 bbWeight=1 PerfScore 27.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 21, prolog size 3, PerfScore 14.58, instruction count 6, allocated bytes for code 21 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
+ +; Total bytes of code 67, prolog size 3, PerfScore 29.08, instruction count 12, allocated bytes for code 67 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
; ============================================================ 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 1,591 95 29 1,467 -5,490 +1,976
benchmarks.run.windows.x64.checked.mch 1,263 104 19 1,140 -4,654 +1,075
benchmarks.run_pgo.windows.x64.checked.mch 2,396 228 30 2,138 -15,543 +1,452
benchmarks.run_tiered.windows.x64.checked.mch 2,607 216 21 2,370 -16,240 +1,566
coreclr_tests.run.windows.x64.checked.mch 108 1 1 106 -42 +73
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 4,725 573 30 4,122 -18,212 +708
libraries_tests.run.windows.x64.Release.mch 1,908 216 34 1,658 -17,971 +128
librariestestsnotieredcompilation.run.windows.x64.Release.mch 1,924 140 25 1,759 -6,710 +555
realworld.run.windows.x64.checked.mch 6,258 385 22 5,851 -17,527 +1,167
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
22,780 1,958 211 20,611 -102,389 +8,700

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 8,001 5,329 2,672 0 (0.00%) 4,064 (32.61%)
benchmarks.run.windows.x64.checked.mch 4,124 1 4,123 3 (0.04%) 3,342 (42.51%)
benchmarks.run_pgo.windows.x64.checked.mch 14,221 11,701 2,520 9 (0.04%) 5,917 (28.82%)
benchmarks.run_tiered.windows.x64.checked.mch 13,430 11,795 1,635 0 (0.00%) 4,456 (24.37%)
coreclr_tests.run.windows.x64.checked.mch 462 3 459 2 (0.03%) 5,582 (86.68%)
libraries.crossgen2.windows.x64.checked.mch 563 0 563 1 (0.06%) 594 (38.25%)
libraries.pmi.windows.x64.checked.mch 11,782 0 11,782 0 (0.00%) 4,477 (26.88%)
libraries_tests.run.windows.x64.Release.mch 7,789 6,644 1,145 0 (0.00%) 4,462 (35.28%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 5,886 0 5,886 1 (0.01%) 4,605 (42.30%)
realworld.run.windows.x64.checked.mch 10,717 0 10,717 2 (0.01%) 4,412 (28.42%)
smoke_tests.nativeaot.windows.x64.checked.mch 2,908 2 2,906 29 (0.37%) 4,541 (57.87%)
79,883 35,475 44,408 47 (0.04%) 46,452 (35.54%)

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: 933140 (overridden on cmd)
Total bytes of diff: 929626 (overridden on cmd)
Total bytes of delta: -3514 (-0.38 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         138 : 5915.dasm (87.34 % of base)
          92 : 1153.dasm (68.66 % of base)
          92 : 8371.dasm (65.25 % of base)
          92 : 1419.dasm (68.66 % of base)
          80 : 14288.dasm (121.21 % of base)
          80 : 4657.dasm (103.90 % of base)
          80 : 5132.dasm (57.55 % of base)
          80 : 7890.dasm (103.90 % of base)
          75 : 13444.dasm (60.00 % of base)
          74 : 3873.dasm (47.13 % of base)
          72 : 5145.dasm (53.33 % of base)
          72 : 5929.dasm (72.00 % of base)
          72 : 8378.dasm (72.00 % of base)
          72 : 8412.dasm (53.33 % of base)
          72 : 8611.dasm (80.90 % of base)
          72 : 8619.dasm (78.26 % of base)
          60 : 11107.dasm (32.09 % of base)
          60 : 11127.dasm (30.46 % of base)
          60 : 1425.dasm (32.09 % of base)
          60 : 1448.dasm (30.46 % of base)

Top file improvements (bytes):
        -376 : 4350.dasm (-44.39 % of base)
        -323 : 4269.dasm (-35.03 % of base)
        -308 : 4262.dasm (-36.54 % of base)
        -198 : 4347.dasm (-33.67 % of base)
        -165 : 2653.dasm (-30.16 % of base)
        -132 : 10605.dasm (-14.44 % of base)
        -132 : 136.dasm (-14.44 % of base)
        -132 : 5782.dasm (-26.19 % of base)
        -132 : 2988.dasm (-25.05 % of base)
        -103 : 4878.dasm (-24.52 % of base)
         -99 : 4018.dasm (-25.98 % of base)
         -99 : 4131.dasm (-27.20 % of base)
         -99 : 4264.dasm (-32.04 % of base)
         -99 : 4638.dasm (-29.91 % of base)
         -99 : 5002.dasm (-34.62 % of base)
         -99 : 8672.dasm (-27.58 % of base)
         -99 : 2980.dasm (-33.67 % of base)
         -70 : 3030.dasm (-26.92 % of base)
         -66 : 134.dasm (-33.85 % of base)
         -66 : 2987.dasm (-34.38 % of base)

54 total files with Code Size differences (30 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
         138 (87.34 % of base) : 5915.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          92 (68.66 % of base) : 1153.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Instrumented Tier1)
          92 (68.66 % of base) : 1419.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Tier1)
          92 (65.25 % of base) : 8371.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier1)
          80 (121.21 % of base) : 14288.dasm - Pipelines.Sockets.Unofficial.Arenas.RetentionPolicy+<>c__DisplayClass10_0:<Decay>b__0(long,long):long:this (Tier0)
          80 (103.90 % of base) : 7890.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 4657.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          80 (57.55 % of base) : 5132.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier0)
          75 (60.00 % of base) : 13444.dasm - StackExchange.Redis.ConfigurationOptions:get_ConfigCheckSeconds():int:this (Tier0)
          74 (47.13 % of base) : 3873.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (80.90 % of base) : 8611.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (53.33 % of base) : 8412.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier0)
          72 (53.33 % of base) : 5145.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier0)
          72 (78.26 % of base) : 8619.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          72 (72.00 % of base) : 8378.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier0)
          72 (72.00 % of base) : 5929.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier0)
          60 (30.46 % of base) : 1448.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier1)
          60 (30.46 % of base) : 11127.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier1)
          60 (32.09 % of base) : 1425.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier1)
          60 (32.09 % of base) : 11107.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier1)

Top method improvements (bytes):
        -376 (-44.39 % of base) : 4350.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -323 (-35.03 % of base) : 4269.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -308 (-36.54 % of base) : 4262.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -198 (-33.67 % of base) : 4347.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -165 (-30.16 % of base) : 2653.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -132 (-26.19 % of base) : 5782.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -132 (-25.05 % of base) : 2988.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -132 (-14.44 % of base) : 10605.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -132 (-14.44 % of base) : 136.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -103 (-24.52 % of base) : 4878.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier0)
         -99 (-25.98 % of base) : 4018.dasm - Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]:Configure[System.__Canon](System.Action`2[System.__Canon,System.__Canon]):Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]:this (Tier0)
         -99 (-29.91 % of base) : 4638.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
         -99 (-27.20 % of base) : 4131.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier0)
         -99 (-33.67 % of base) : 2980.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -99 (-34.62 % of base) : 5002.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -99 (-32.04 % of base) : 4264.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
         -99 (-27.58 % of base) : 8672.dasm - System.Threading.Tasks.Task:WhenAny[System.__Canon](System.__Canon,System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (Tier0)
         -70 (-26.92 % of base) : 3030.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier0)
         -66 (-34.38 % of base) : 2987.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -66 (-33.85 % of base) : 452.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Instrumented Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 934.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (219.05 % of base) : 1145.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          80 (121.21 % of base) : 14288.dasm - Pipelines.Sockets.Unofficial.Arenas.RetentionPolicy+<>c__DisplayClass10_0:<Decay>b__0(long,long):long:this (Tier0)
          80 (103.90 % of base) : 7890.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 4657.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         138 (87.34 % of base) : 5915.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          72 (80.90 % of base) : 8611.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (78.26 % of base) : 8619.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          72 (72.00 % of base) : 8378.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Instrumented Tier0)
          72 (72.00 % of base) : 5929.dasm - System.Threading.WaitHandle:ToTimeoutMilliseconds(System.TimeSpan):int (Tier0)
          92 (68.66 % of base) : 1153.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Instrumented Tier1)
          92 (68.66 % of base) : 1419.dasm - System.DateTime:AddSeconds(double):System.DateTime:this (Tier1)
          92 (65.25 % of base) : 8371.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier1)
          75 (60.00 % of base) : 13444.dasm - StackExchange.Redis.ConfigurationOptions:get_ConfigCheckSeconds():int:this (Tier0)
          80 (57.55 % of base) : 5132.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier0)
          46 (56.79 % of base) : 12248.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier1)
          72 (53.33 % of base) : 8412.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Instrumented Tier0)
          72 (53.33 % of base) : 5145.dasm - System.Threading.ManualResetEventSlim:Wait(System.TimeSpan):ubyte:this (Tier0)
          74 (47.13 % of base) : 3873.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          46 (39.66 % of base) : 11125.dasm - System.TimeProvider:GetElapsedTime(long,long):System.TimeSpan:this (Tier1)

Top method improvements (percentages):
        -376 (-44.39 % of base) : 4350.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -308 (-36.54 % of base) : 4262.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -33 (-36.26 % of base) : 2893.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -323 (-35.03 % of base) : 4269.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -99 (-34.62 % of base) : 5002.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -33 (-34.38 % of base) : 3995.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
         -66 (-34.38 % of base) : 2987.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -66 (-33.85 % of base) : 452.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Instrumented Tier0)
         -66 (-33.85 % of base) : 134.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Tier0)
         -66 (-33.85 % of base) : 10604.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ValueTaskAwaiter`1[System.__Canon],Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener+<AcceptAsync>d__10](byref,byref,byref) (Tier0)
        -198 (-33.67 % of base) : 4347.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -99 (-33.67 % of base) : 2980.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -33 (-33.33 % of base) : 4050.dasm - Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Transient[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
         -66 (-33.33 % of base) : 5008.dasm - System.SpanHelpers:Reverse[System.__Canon](byref,ulong) (Tier0)
         -33 (-32.35 % of base) : 2884.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:Get[System.__Canon](Microsoft.Extensions.Configuration.IConfiguration):System.__Canon (Tier0)
         -33 (-32.04 % of base) : 4268.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
         -99 (-32.04 % of base) : 4264.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
         -33 (-32.04 % of base) : 126.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl+<StartAsync>d__28`1[System.__Canon]](byref):this (Tier0)
         -33 (-32.04 % of base) : 10595.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl+<StartAsync>d__28`1[System.__Canon]](byref):this (Tier0)
        -165 (-30.16 % of base) : 2653.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)


benchmarks.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: 638956 (overridden on cmd)
Total bytes of diff: 635377 (overridden on cmd)
Total bytes of delta: -3579 (-0.56 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         177 : 3063.dasm (17.12 % of base)
         143 : 4922.dasm (88.82 % of base)
         133 : 6792.dasm (81.60 % of base)
          91 : 929.dasm (74.59 % of base)
          82 : 4823.dasm (41.84 % of base)
          54 : 5532.dasm (38.30 % of base)
          50 : 5509.dasm (38.46 % of base)
          49 : 2690.dasm (5.63 % of base)
          49 : 6664.dasm (6.06 % of base)
          46 : 5357.dasm (56.79 % of base)
          46 : 2581.dasm (219.05 % of base)
          45 : 686.dasm (75.00 % of base)
          45 : 5683.dasm (4.46 % of base)
          32 : 3985.dasm (53.33 % of base)
          17 : 4879.dasm (5.99 % of base)
           6 : 1156.dasm (3.82 % of base)
           5 : 1923.dasm (4.42 % of base)
           3 : 3915.dasm (1.38 % of base)
           2 : 2019.dasm (3.17 % of base)

Top file improvements (bytes):
        -270 : 4933.dasm (-23.22 % of base)
        -219 : 6725.dasm (-18.34 % of base)
        -208 : 5167.dasm (-17.84 % of base)
        -177 : 233.dasm (-33.27 % of base)
        -171 : 329.dasm (-34.20 % of base)
        -152 : 237.dasm (-25.12 % of base)
        -151 : 555.dasm (-25.00 % of base)
        -126 : 1052.dasm (-28.25 % of base)
        -111 : 494.dasm (-20.71 % of base)
        -104 : 4306.dasm (-17.30 % of base)
        -102 : 1071.dasm (-29.06 % of base)
         -92 : 3606.dasm (-26.29 % of base)
         -83 : 202.dasm (-22.80 % of base)
         -83 : 1259.dasm (-25.08 % of base)
         -70 : 1255.dasm (-21.34 % of base)
         -63 : 1051.dasm (-29.30 % of base)
         -63 : 1857.dasm (-28.51 % of base)
         -59 : 1702.dasm (-25.43 % of base)
         -59 : 8185.dasm (-23.98 % of base)
         -59 : 7133.dasm (-22.52 % of base)

49 total files with Code Size differences (30 improved, 19 regressed), 21 unchanged.

Top method regressions (bytes):
         177 (17.12 % of base) : 3063.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
         143 (88.82 % of base) : 4922.dasm - System.Random+Net5CompatSeedImpl:NextUInt64():ulong:this (FullOpts)
         133 (81.60 % of base) : 6792.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
          91 (74.59 % of base) : 929.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          82 (41.84 % of base) : 4823.dasm - System.Numerics.Tests.Perf_VectorOf`1[ushort]:SquareRootBenchmark():System.Numerics.Vector`1[ushort]:this (FullOpts)
          54 (38.30 % of base) : 5532.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
          50 (38.46 % of base) : 5509.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          49 (6.06 % of base) : 6664.dasm - System.Single:CosPi(float):float (FullOpts)
          49 (5.63 % of base) : 2690.dasm - System.Single:TanPi(float):float (FullOpts)
          46 (219.05 % of base) : 2581.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          46 (56.79 % of base) : 5357.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          45 (4.46 % of base) : 5683.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
          45 (75.00 % of base) : 686.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          32 (53.33 % of base) : 3985.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          17 (5.99 % of base) : 4879.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
           6 (3.82 % of base) : 1156.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           5 (4.42 % of base) : 1923.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           3 (1.38 % of base) : 3915.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
           2 (3.17 % of base) : 2019.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)

Top method improvements (bytes):
        -270 (-23.22 % of base) : 4933.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -219 (-18.34 % of base) : 6725.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (FullOpts)
        -208 (-17.84 % of base) : 5167.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -171 (-34.20 % of base) : 329.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-25.00 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -126 (-28.25 % of base) : 1052.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -111 (-20.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -104 (-17.30 % of base) : 4306.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
        -102 (-29.06 % of base) : 1071.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -92 (-26.29 % of base) : 3606.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -83 (-25.08 % of base) : 1259.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -83 (-22.80 % of base) : 202.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (FullOpts)
         -70 (-21.34 % of base) : 1255.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
         -63 (-29.30 % of base) : 1051.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -63 (-28.51 % of base) : 1857.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -59 (-23.98 % of base) : 8185.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:GetAttribute[System.__Canon](System.Object):System.__Canon (FullOpts)
         -59 (-22.52 % of base) : 7133.dasm - System.Linq.Enumerable:SelectMany[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -59 (-25.43 % of base) : 1702.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          46 (219.05 % of base) : 2581.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
         143 (88.82 % of base) : 4922.dasm - System.Random+Net5CompatSeedImpl:NextUInt64():ulong:this (FullOpts)
         133 (81.60 % of base) : 6792.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
          45 (75.00 % of base) : 686.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (74.59 % of base) : 929.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          46 (56.79 % of base) : 5357.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          32 (53.33 % of base) : 3985.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          82 (41.84 % of base) : 4823.dasm - System.Numerics.Tests.Perf_VectorOf`1[ushort]:SquareRootBenchmark():System.Numerics.Vector`1[ushort]:this (FullOpts)
          50 (38.46 % of base) : 5509.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          54 (38.30 % of base) : 5532.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
         177 (17.12 % of base) : 3063.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
          49 (6.06 % of base) : 6664.dasm - System.Single:CosPi(float):float (FullOpts)
          17 (5.99 % of base) : 4879.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (FullOpts)
          49 (5.63 % of base) : 2690.dasm - System.Single:TanPi(float):float (FullOpts)
          45 (4.46 % of base) : 5683.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
           5 (4.42 % of base) : 1923.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           6 (3.82 % of base) : 1156.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           2 (3.17 % of base) : 2019.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           3 (1.38 % of base) : 3915.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)

Top method improvements (percentages):
        -171 (-34.20 % of base) : 329.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -39 (-31.45 % of base) : 6964.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -63 (-29.30 % of base) : 1051.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -102 (-29.06 % of base) : 1071.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -63 (-28.51 % of base) : 1857.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
        -126 (-28.25 % of base) : 1052.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -37 (-28.24 % of base) : 1764.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -37 (-27.41 % of base) : 1525.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -37 (-27.21 % of base) : 3913.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         -37 (-26.62 % of base) : 5539.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[System.__Canon],System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref,byref) (FullOpts)
         -92 (-26.29 % of base) : 3606.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -18 (-25.71 % of base) : 8197.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
         -59 (-25.43 % of base) : 1702.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:GetConverter[System.__Canon](System.Text.Json.Serialization.Metadata.JsonObjectInfoValues`1[System.__Canon]):System.Text.Json.Serialization.JsonConverter`1[System.__Canon] (FullOpts)
         -18 (-25.35 % of base) : 1258.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],byref):ubyte (FullOpts)
        -152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
         -83 (-25.08 % of base) : 1259.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -37 (-25.00 % of base) : 7281.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -151 (-25.00 % of base) : 555.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -37 (-24.83 % of base) : 1274.dasm - System.Collections.Frozen.FrozenDictionary:ToFrozenDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)


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: 1821224 (overridden on cmd)
Total bytes of diff: 1807133 (overridden on cmd)
Total bytes of delta: -14091 (-0.77 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         143 : 2333.dasm (97.28 % of base)
         138 : 12079.dasm (87.34 % of base)
         106 : 14921.dasm (6.77 % of base)
         101 : 15547.dasm (13.00 % of base)
          97 : 18592.dasm (202.08 % of base)
          89 : 5970.dasm (8.91 % of base)
          80 : 7598.dasm (103.90 % of base)
          80 : 6371.dasm (103.90 % of base)
          74 : 8425.dasm (8.51 % of base)
          74 : 1671.dasm (54.01 % of base)
          72 : 15212.dasm (78.26 % of base)
          72 : 15263.dasm (56.25 % of base)
          71 : 1800.dasm (112.70 % of base)
          71 : 19679.dasm (34.80 % of base)
          65 : 11514.dasm (9.77 % of base)
           8 : 10332.dasm (7.21 % of base)
           8 : 14288.dasm (7.21 % of base)
           8 : 16264.dasm (7.21 % of base)
           8 : 16720.dasm (7.21 % of base)
           8 : 18476.dasm (7.21 % of base)

Top file improvements (bytes):
        -582 : 16830.dasm (-29.26 % of base)
        -457 : 1592.dasm (-49.25 % of base)
        -425 : 793.dasm (-46.65 % of base)
        -404 : 799.dasm (-40.28 % of base)
        -400 : 3761.dasm (-38.24 % of base)
        -389 : 1502.dasm (-42.42 % of base)
        -333 : 16340.dasm (-39.93 % of base)
        -313 : 3972.dasm (-41.57 % of base)
        -288 : 20220.dasm (-41.38 % of base)
        -281 : 16829.dasm (-32.41 % of base)
        -276 : 1336.dasm (-32.13 % of base)
        -258 : 13152.dasm (-39.94 % of base)
        -240 : 3872.dasm (-42.93 % of base)
        -210 : 270.dasm (-34.37 % of base)
        -204 : 4313.dasm (-12.23 % of base)
        -195 : 3876.dasm (-36.31 % of base)
        -189 : 13328.dasm (-33.99 % of base)
        -186 : 15278.dasm (-20.04 % of base)
        -181 : 617.dasm (-31.42 % of base)
        -162 : 1575.dasm (-34.03 % of base)

54 total files with Code Size differences (33 improved, 21 regressed), 20 unchanged.

Top method regressions (bytes):
         143 (97.28 % of base) : 2333.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 12079.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         106 (6.77 % of base) : 14921.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
         101 (13.00 % of base) : 15547.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          97 (202.08 % of base) : 18592.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
          89 (8.91 % of base) : 5970.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
          80 (103.90 % of base) : 7598.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 6371.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (8.51 % of base) : 8425.dasm - System.Single:TanPi(float):float (Tier0)
          74 (54.01 % of base) : 1671.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (56.25 % of base) : 15263.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (78.26 % of base) : 15212.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (34.80 % of base) : 19679.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
          71 (112.70 % of base) : 1800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          65 (9.77 % of base) : 11514.dasm - System.Single:CosPi(float):float (Tier0)
           8 (7.21 % of base) : 10332.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 14288.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 16264.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 16720.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 18476.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -582 (-29.26 % of base) : 16830.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
        -457 (-49.25 % of base) : 1592.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 793.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -404 (-40.28 % of base) : 799.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -400 (-38.24 % of base) : 3761.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -389 (-42.42 % of base) : 1502.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -333 (-39.93 % of base) : 16340.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -313 (-41.57 % of base) : 3972.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-41.38 % of base) : 20220.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -281 (-32.41 % of base) : 16829.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
        -276 (-32.13 % of base) : 1336.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 13152.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -240 (-42.93 % of base) : 3872.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -210 (-34.37 % of base) : 270.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -204 (-12.23 % of base) : 4313.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
        -195 (-36.31 % of base) : 3876.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -189 (-33.99 % of base) : 13328.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -186 (-20.04 % of base) : 15278.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -181 (-31.42 % of base) : 617.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],byref):ubyte (Tier0)
        -162 (-34.03 % of base) : 1575.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)

Top method regressions (percentages):
          97 (202.08 % of base) : 18592.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
          71 (112.70 % of base) : 1800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          80 (103.90 % of base) : 7598.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 6371.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.28 % of base) : 2333.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 12079.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          72 (78.26 % of base) : 15212.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          72 (56.25 % of base) : 15263.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          74 (54.01 % of base) : 1671.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          71 (34.80 % of base) : 19679.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
         101 (13.00 % of base) : 15547.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          65 (9.77 % of base) : 11514.dasm - System.Single:CosPi(float):float (Tier0)
          89 (8.91 % of base) : 5970.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
          74 (8.51 % of base) : 8425.dasm - System.Single:TanPi(float):float (Tier0)
           8 (7.21 % of base) : 10332.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 14288.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 16264.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 16720.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 18476.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 12068.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -457 (-49.25 % of base) : 1592.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 793.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -240 (-42.93 % of base) : 3872.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -389 (-42.42 % of base) : 1502.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -81 (-41.75 % of base) : 19096.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -313 (-41.57 % of base) : 3972.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-41.38 % of base) : 20220.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -133 (-40.92 % of base) : 3971.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-40.82 % of base) : 8306.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.31 % of base) : 19634.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`3[System.__Canon,int,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-40.31 % of base) : 789.dasm - System.Linq.Enumerable:SkipWhile[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -404 (-40.28 % of base) : 799.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 18352.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 17301.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -258 (-39.94 % of base) : 13152.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -333 (-39.93 % of base) : 16340.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
         -81 (-39.90 % of base) : 9588.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -129 (-39.81 % of base) : 1577.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -400 (-38.24 % of base) : 3761.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -129 (-38.05 % of base) : 4110.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)


benchmarks.run_tiered.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: 1565006 (overridden on cmd)
Total bytes of diff: 1550332 (overridden on cmd)
Total bytes of delta: -14674 (-0.94 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         143 : 2305.dasm (97.28 % of base)
         138 : 4888.dasm (87.34 % of base)
         106 : 10546.dasm (6.77 % of base)
         101 : 11285.dasm (13.00 % of base)
          97 : 13889.dasm (202.08 % of base)
          91 : 12712.dasm (74.59 % of base)
          89 : 13092.dasm (8.91 % of base)
          80 : 7677.dasm (103.90 % of base)
          74 : 1633.dasm (54.01 % of base)
          74 : 13732.dasm (8.51 % of base)
          72 : 10887.dasm (56.25 % of base)
          72 : 17739.dasm (80.90 % of base)
          72 : 10829.dasm (78.26 % of base)
          71 : 1773.dasm (112.70 % of base)
          71 : 15815.dasm (83.53 % of base)
          71 : 8712.dasm (34.80 % of base)
          65 : 8995.dasm (9.77 % of base)
          46 : 9894.dasm (219.05 % of base)
          19 : 17691.dasm (25.00 % of base)
           8 : 2095.dasm (7.21 % of base)

Top file improvements (bytes):
        -582 : 16332.dasm (-29.26 % of base)
        -457 : 1553.dasm (-49.25 % of base)
        -425 : 728.dasm (-46.65 % of base)
        -404 : 734.dasm (-40.28 % of base)
        -400 : 13640.dasm (-38.24 % of base)
        -389 : 1462.dasm (-42.42 % of base)
        -333 : 3353.dasm (-39.93 % of base)
        -313 : 6440.dasm (-41.57 % of base)
        -288 : 12546.dasm (-41.38 % of base)
        -281 : 16331.dasm (-32.41 % of base)
        -276 : 1299.dasm (-32.13 % of base)
        -258 : 6220.dasm (-39.94 % of base)
        -253 : 17819.dasm (-38.86 % of base)
        -240 : 13704.dasm (-42.93 % of base)
        -210 : 272.dasm (-34.37 % of base)
        -204 : 15313.dasm (-12.23 % of base)
        -195 : 13708.dasm (-36.31 % of base)
        -195 : 16033.dasm (-35.78 % of base)
        -189 : 6406.dasm (-33.99 % of base)
        -186 : 10906.dasm (-20.04 % of base)

54 total files with Code Size differences (34 improved, 20 regressed), 20 unchanged.

Top method regressions (bytes):
         143 (97.28 % of base) : 2305.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 4888.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         106 (6.77 % of base) : 10546.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
         101 (13.00 % of base) : 11285.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          97 (202.08 % of base) : 13889.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
          91 (74.59 % of base) : 12712.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          89 (8.91 % of base) : 13092.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
          80 (103.90 % of base) : 7677.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (8.51 % of base) : 13732.dasm - System.Single:TanPi(float):float (Tier0)
          74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (56.25 % of base) : 10887.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (80.90 % of base) : 17739.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (78.26 % of base) : 10829.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (34.80 % of base) : 8712.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
          71 (83.53 % of base) : 15815.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          71 (112.70 % of base) : 1773.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          65 (9.77 % of base) : 8995.dasm - System.Single:CosPi(float):float (Tier0)
          46 (219.05 % of base) : 9894.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          19 (25.00 % of base) : 17691.dasm - Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
           8 (7.21 % of base) : 2095.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -582 (-29.26 % of base) : 16332.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
        -457 (-49.25 % of base) : 1553.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 728.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -404 (-40.28 % of base) : 734.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -400 (-38.24 % of base) : 13640.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -389 (-42.42 % of base) : 1462.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -333 (-39.93 % of base) : 3353.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -313 (-41.57 % of base) : 6440.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-41.38 % of base) : 12546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
        -281 (-32.41 % of base) : 16331.dasm - System.Threading.Tasks.Parallel:ForEachWorker[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon,System.__Canon],System.Action`3[System.__Canon,System.__Canon,long],System.Func`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon],System.Func`5[System.__Canon,System.__Canon,long,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier0)
        -276 (-32.13 % of base) : 1299.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 6220.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -253 (-38.86 % of base) : 17819.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -240 (-42.93 % of base) : 13704.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -210 (-34.37 % of base) : 272.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -204 (-12.23 % of base) : 15313.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
        -195 (-35.78 % of base) : 16033.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -195 (-36.31 % of base) : 13708.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -189 (-33.99 % of base) : 6406.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -186 (-20.04 % of base) : 10906.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 9894.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          97 (202.08 % of base) : 13889.dasm - System.Runtime.Intrinsics.Scalar`1[ushort]:Sqrt(ushort):ushort (Tier0)
          71 (112.70 % of base) : 1773.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          80 (103.90 % of base) : 7677.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.28 % of base) : 2305.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 4888.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          71 (83.53 % of base) : 15815.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          72 (80.90 % of base) : 17739.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (78.26 % of base) : 10829.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          91 (74.59 % of base) : 12712.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          72 (56.25 % of base) : 10887.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          71 (34.80 % of base) : 8712.dasm - Jil.Deserialize.NameAutomata`1[int]:DoCharBranches[int](Jil.Deserialize.NameAutomata`1+Data`1[int,int],System.Collections.Generic.List`1[System.Tuple`2[ushort,Sigil.Label]]) (Tier0)
          19 (25.00 % of base) : 17691.dasm - Newtonsoft.Json.JsonTextReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (Tier0)
         101 (13.00 % of base) : 11285.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          65 (9.77 % of base) : 8995.dasm - System.Single:CosPi(float):float (Tier0)
          89 (8.91 % of base) : 13092.dasm - System.Security.Cryptography.X509Certificates.ChainPal:BuildChain(ubyte,System.Security.Cryptography.X509Certificates.ICertificatePal,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,System.Security.Cryptography.OidCollection,System.Security.Cryptography.OidCollection,int,int,System.Security.Cryptography.X509Certificates.X509Certificate2Collection,int,System.DateTime,System.TimeSpan,ubyte):System.Security.Cryptography.X509Certificates.IChainPal (Tier0)
          74 (8.51 % of base) : 13732.dasm - System.Single:TanPi(float):float (Tier0)
           8 (7.21 % of base) : 2095.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
         106 (6.77 % of base) : 10546.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)

Top method improvements (percentages):
        -457 (-49.25 % of base) : 1553.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 728.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -240 (-42.93 % of base) : 13704.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (Tier0)
        -389 (-42.42 % of base) : 1462.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -81 (-41.75 % of base) : 8097.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -313 (-41.57 % of base) : 6440.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-41.38 % of base) : 12546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]]):System.ValueTuple`2[System.__Canon,System.__Canon][] (Tier0)
         -81 (-41.12 % of base) : 15656.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -129 (-40.95 % of base) : 8389.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -133 (-40.92 % of base) : 6439.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-40.31 % of base) : 8667.dasm - System.Linq.Enumerable:Select[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`3[System.__Canon,int,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-40.31 % of base) : 724.dasm - System.Linq.Enumerable:SkipWhile[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -404 (-40.28 % of base) : 734.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 9987.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 6857.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -258 (-39.94 % of base) : 6220.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -333 (-39.93 % of base) : 3353.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
         -81 (-39.90 % of base) : 4930.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -129 (-39.81 % of base) : 1538.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -81 (-39.13 % of base) : 17377.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)


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: 105015 (overridden on cmd)
Total bytes of diff: 105046 (overridden on cmd)
Total bytes of delta: 31 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          73 : 19438.dasm (39.67 % of base)

Top file improvements (bytes):
         -42 : 502.dasm (-10.99 % of base)

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

Top method regressions (bytes):
          73 (39.67 % of base) : 19438.dasm - FPBehaviorApp.Managed:ConvertDoubleToUInt32(double,int):uint (FullOpts)

Top method improvements (bytes):
         -42 (-10.99 % of base) : 502.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)

Top method regressions (percentages):
          73 (39.67 % of base) : 19438.dasm - FPBehaviorApp.Managed:ConvertDoubleToUInt32(double,int):uint (FullOpts)

Top method improvements (percentages):
         -42 (-10.99 % of base) : 502.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)


libraries.pmi.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: 693716 (overridden on cmd)
Total bytes of diff: 676212 (overridden on cmd)
Total bytes of delta: -17504 (-2.52 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         132 : 12354.dasm (29.73 % of base)
         130 : 9641.dasm (17.29 % of base)
          69 : 8910.dasm (24.47 % of base)
          45 : 10960.dasm (75.00 % of base)
          45 : 10981.dasm (75.00 % of base)
          45 : 10978.dasm (62.50 % of base)
          45 : 10957.dasm (62.50 % of base)
          31 : 8506.dasm (12.60 % of base)
          25 : 12066.dasm (22.52 % of base)
          17 : 13009.dasm (15.60 % of base)
          16 : 12122.dasm (8.47 % of base)
          14 : 10081.dasm (18.18 % of base)
          11 : 10508.dasm (4.68 % of base)
          10 : 8595.dasm (5.26 % of base)
          10 : 12405.dasm (4.63 % of base)
          10 : 15327.dasm (7.63 % of base)
           8 : 1984.dasm (7.69 % of base)
           6 : 5142.dasm (2.58 % of base)
           6 : 5146.dasm (1.40 % of base)
           6 : 15285.dasm (4.29 % of base)

Top file improvements (bytes):
        -148 : 12462.dasm (-22.49 % of base)
        -122 : 2256.dasm (-25.05 % of base)
        -122 : 6202.dasm (-25.05 % of base)
        -118 : 12507.dasm (-23.55 % of base)
        -115 : 2260.dasm (-27.45 % of base)
        -111 : 12465.dasm (-23.03 % of base)
        -110 : 2254.dasm (-31.61 % of base)
        -110 : 2258.dasm (-31.61 % of base)
        -109 : 10569.dasm (-25.23 % of base)
        -108 : 13362.dasm (-17.14 % of base)
        -108 : 5154.dasm (-23.23 % of base)
        -103 : 1165.dasm (-28.14 % of base)
        -103 : 11685.dasm (-25.81 % of base)
        -103 : 5200.dasm (-26.89 % of base)
        -100 : 10603.dasm (-25.19 % of base)
         -96 : 12488.dasm (-21.19 % of base)
         -95 : 2452.dasm (-31.05 % of base)
         -95 : 2506.dasm (-31.05 % of base)
         -95 : 2510.dasm (-31.05 % of base)
         -94 : 12397.dasm (-21.86 % of base)

61 total files with Code Size differences (39 improved, 22 regressed), 20 unchanged.

Top method regressions (bytes):
         132 (29.73 % of base) : 12354.dasm - Microsoft.FSharp.Primitives.Basics.List:countBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.Nullable`1[int],int]] (FullOpts)
         130 (17.29 % of base) : 9641.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.__Canon],System.__Canon],System.ArraySegment`1[System.__Canon],int) (FullOpts)
          69 (24.47 % of base) : 8910.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          45 (62.50 % of base) : 10978.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (75.00 % of base) : 10981.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (62.50 % of base) : 10957.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (75.00 % of base) : 10960.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          31 (12.60 % of base) : 8506.dasm - Microsoft.FSharp.Collections.SetTreeModule:compare[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):int (FullOpts)
          25 (22.52 % of base) : 12066.dasm - Microsoft.FSharp.Core.ResultModule:ToValueOption[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpResult`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
          17 (15.60 % of base) : 13009.dasm - Microsoft.FSharp.Core.Operators:KeyValuePattern[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          16 (8.47 % of base) : 12122.dasm - Microsoft.FSharp.Core.ValueOption:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
          14 (18.18 % of base) : 10081.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          11 (4.68 % of base) : 10508.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
          10 (5.26 % of base) : 8595.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          10 (7.63 % of base) : 15327.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          10 (4.63 % of base) : 12405.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           8 (7.69 % of base) : 1984.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
           6 (1.40 % of base) : 5146.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           6 (2.58 % of base) : 5142.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           6 (4.29 % of base) : 15285.dasm - Microsoft.FSharp.Core.Operators+NonStructuralComparison:Compare$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):int (FullOpts)

Top method improvements (bytes):
        -148 (-22.49 % of base) : 12462.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -122 (-25.05 % of base) : 2256.dasm - Microsoft.FSharp.Control.TaskBuilderBase:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.Nullable`1[int]],Microsoft.FSharp.Core.Unit]:this (FullOpts)
        -122 (-25.05 % of base) : 6202.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:For[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.Nullable`1[int],Microsoft.FSharp.Core.Unit] (FullOpts)
        -118 (-23.55 % of base) : 12507.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -115 (-27.45 % of base) : 2260.dasm - Microsoft.FSharp.Control.TaskBuilder:RunDynamic[System.__Canon](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
        -111 (-23.03 % of base) : 12465.dasm - Microsoft.FSharp.Primitives.Basics.List:transposeGetHeadsFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],int):int (FullOpts)
        -110 (-31.61 % of base) : 2254.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -110 (-31.61 % of base) : 2258.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -109 (-25.23 % of base) : 10569.dasm - Microsoft.FSharp.Collections.SeqModule:oneStepTo@1233[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.List`1[System.__Canon],Microsoft.FSharp.Core.FSharpRef`1[System.__Canon],int) (FullOpts)
        -108 (-23.23 % of base) : 5154.dasm - Microsoft.FSharp.Control.AsyncPrimitives:TryFinally[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
        -108 (-17.14 % of base) : 13362.dasm - Microsoft.FSharp.Core.Operators:PowInteger$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):System.__Canon (FullOpts)
        -103 (-28.14 % of base) : 1165.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Map[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:this (FullOpts)
        -103 (-26.89 % of base) : 5200.dasm - Microsoft.FSharp.Control.AsyncPrimitives:StartAsTask[System.__Canon](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
        -103 (-25.81 % of base) : 11685.dasm - Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers:EnumerateTryWith[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Exception,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -100 (-25.19 % of base) : 10603.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
         -96 (-21.19 % of base) : 12488.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
         -95 (-31.05 % of base) : 2506.dasm - Microsoft.FSharp.Linq.QueryBuilder:SkipWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         -95 (-31.05 % of base) : 2510.dasm - Microsoft.FSharp.Linq.QueryBuilder:TakeWhile[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         -95 (-31.05 % of base) : 2452.dasm - Microsoft.FSharp.Linq.QueryBuilder:Where[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):Microsoft.FSharp.Linq.QuerySource`2[System.__Canon,System.Nullable`1[int]]:this (FullOpts)
         -94 (-21.86 % of base) : 12397.dasm - Microsoft.FSharp.Primitives.Basics.List:indexed[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          45 (75.00 % of base) : 10981.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (75.00 % of base) : 10960.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[ubyte,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Collections.Generic.List`1[ubyte]]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (62.50 % of base) : 10978.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.Nullable`1[int]],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (62.50 % of base) : 10957.dasm - Microsoft.FSharp.Collections.SeqModule+groupByValueType@1338-1[System.__Canon,System.Nullable`1[int]]:Invoke(System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
         132 (29.73 % of base) : 12354.dasm - Microsoft.FSharp.Primitives.Basics.List:countBy[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,int],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[System.Nullable`1[int],int]] (FullOpts)
          69 (24.47 % of base) : 8910.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          25 (22.52 % of base) : 12066.dasm - Microsoft.FSharp.Core.ResultModule:ToValueOption[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpResult`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
          14 (18.18 % of base) : 10081.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         130 (17.29 % of base) : 9641.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon[],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.__Canon],System.__Canon],System.ArraySegment`1[System.__Canon],int) (FullOpts)
          17 (15.60 % of base) : 13009.dasm - Microsoft.FSharp.Core.Operators:KeyValuePattern[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          31 (12.60 % of base) : 8506.dasm - Microsoft.FSharp.Collections.SetTreeModule:compare[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):int (FullOpts)
          16 (8.47 % of base) : 12122.dasm - Microsoft.FSharp.Core.ValueOption:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           8 (7.69 % of base) : 1984.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          10 (7.63 % of base) : 15327.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          10 (5.26 % of base) : 8595.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          11 (4.68 % of base) : 10508.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
          10 (4.63 % of base) : 12405.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           6 (4.29 % of base) : 15285.dasm - Microsoft.FSharp.Core.Operators+NonStructuralComparison:Compare$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):int (FullOpts)
           3 (2.94 % of base) : 12130.dasm - Microsoft.FSharp.Core.ValueOption:OfObj[System.__Canon](System.__Canon):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           4 (2.70 % of base) : 12126.dasm - Microsoft.FSharp.Core.ValueOption:ToList[System.__Canon](Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)

Top method improvements (percentages):
         -59 (-33.71 % of base) : 9668.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
         -43 (-32.82 % of base) : 8483.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 9099.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
         -18 (-32.73 % of base) : 11931.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 11964.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 10007.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 10411.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 15529.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 15515.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 15849.dasm - Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -43 (-32.33 % of base) : 10154.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -18 (-32.14 % of base) : 11933.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -18 (-32.14 % of base) : 11969.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -18 (-32.14 % of base) : 11968.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -63 (-31.66 % of base) : 10271.dasm - Microsoft.FSharp.Collections.ListModule:Permute[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,int],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -110 (-31.61 % of base) : 2254.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinally[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
        -110 (-31.61 % of base) : 2258.dasm - Microsoft.FSharp.Control.TaskBuilderBase:TryFinallyAsync[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Threading.Tasks.ValueTask]):Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.Nullable`1[int]]:this (FullOpts)
         -85 (-31.25 % of base) : 1157.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int):int:this (FullOpts)
         -85 (-31.25 % of base) : 1161.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[long](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],long):long:this (FullOpts)
         -85 (-31.25 % of base) : 1154.dasm - Microsoft.FSharp.Collections.FSharpSet`1[System.__Canon]:Fold[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (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: 1095020 (overridden on cmd)
Total bytes of diff: 1077177 (overridden on cmd)
Total bytes of delta: -17843 (-1.63 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          46 : 11630.dasm (219.05 % of base)
          46 : 1552.dasm (219.05 % of base)
           3 : 6129.dasm (1.67 % of base)
           3 : 2895.dasm (1.67 % of base)
           1 : 11292.dasm (0.85 % of base)
           1 : 10708.dasm (0.85 % of base)
           1 : 11407.dasm (0.85 % of base)
           1 : 4488.dasm (0.85 % of base)
           1 : 6444.dasm (0.85 % of base)
           1 : 6724.dasm (0.85 % of base)
           1 : 7663.dasm (0.85 % of base)
           1 : 887.dasm (0.85 % of base)
           1 : 10147.dasm (0.85 % of base)
           1 : 11539.dasm (0.85 % of base)
           1 : 11871.dasm (0.85 % of base)
           1 : 1304.dasm (0.85 % of base)
           1 : 1468.dasm (0.85 % of base)
           1 : 6536.dasm (0.85 % of base)
           1 : 7932.dasm (0.85 % of base)
           1 : 9888.dasm (0.85 % of base)

Top file improvements (bytes):
        -457 : 27.dasm (-49.25 % of base)
        -457 : 1594.dasm (-49.25 % of base)
        -425 : 1589.dasm (-46.60 % of base)
        -425 : 22.dasm (-46.60 % of base)
        -404 : 4756.dasm (-40.28 % of base)
        -404 : 2608.dasm (-40.28 % of base)
        -389 : 117.dasm (-42.10 % of base)
        -389 : 1684.dasm (-42.33 % of base)
        -313 : 7702.dasm (-41.68 % of base)
        -288 : 123.dasm (-42.86 % of base)
        -288 : 1690.dasm (-42.86 % of base)
        -288 : 2238.dasm (-42.86 % of base)
        -288 : 6640.dasm (-42.86 % of base)
        -276 : 2636.dasm (-32.13 % of base)
        -276 : 4784.dasm (-32.13 % of base)
        -258 : 3203.dasm (-39.94 % of base)
        -258 : 5293.dasm (-39.94 % of base)
        -253 : 8688.dasm (-38.98 % of base)
        -186 : 3471.dasm (-19.25 % of base)
        -186 : 5566.dasm (-19.21 % of base)

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

Top method regressions (bytes):
          46 (219.05 % of base) : 11630.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (219.05 % of base) : 1552.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
           3 (1.67 % of base) : 6129.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           3 (1.67 % of base) : 2895.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
           1 (0.85 % of base) : 11292.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 10708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11407.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 4488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6444.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6724.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 7663.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 10147.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11539.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11871.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 1304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 1468.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6536.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 7932.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 9888.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -457 (-49.25 % of base) : 27.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.25 % of base) : 1594.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.60 % of base) : 1589.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -425 (-46.60 % of base) : 22.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -404 (-40.28 % of base) : 4756.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -404 (-40.28 % of base) : 2608.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -389 (-42.10 % of base) : 117.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -389 (-42.33 % of base) : 1684.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -313 (-41.68 % of base) : 7702.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-42.86 % of base) : 2238.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.86 % of base) : 6640.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.86 % of base) : 123.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -288 (-42.86 % of base) : 1690.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -276 (-32.13 % of base) : 2636.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -276 (-32.13 % of base) : 4784.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 3203.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -258 (-39.94 % of base) : 5293.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -253 (-38.98 % of base) : 8688.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -186 (-19.25 % of base) : 3471.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -186 (-19.21 % of base) : 5566.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 11630.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (219.05 % of base) : 1552.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
           3 (1.67 % of base) : 6129.dasm - System.PlatformDetection+<>c:<.cctor>b__509_4():ubyte:this (Tier0)
           3 (1.67 % of base) : 2895.dasm - System.PlatformDetection+<>c:<.cctor>b__509_5():ubyte:this (Tier0)
           1 (0.85 % of base) : 11292.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 10708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11407.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 4488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6444.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6724.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 7663.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 10147.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11539.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 11871.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 1304.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 1468.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 6536.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 7932.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 9888.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -457 (-49.25 % of base) : 27.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.25 % of base) : 1594.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.60 % of base) : 1589.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -425 (-46.60 % of base) : 22.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-42.86 % of base) : 2238.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.86 % of base) : 6640.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.86 % of base) : 123.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -288 (-42.86 % of base) : 1690.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -389 (-42.33 % of base) : 1684.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -389 (-42.10 % of base) : 117.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -313 (-41.68 % of base) : 7702.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-41.35 % of base) : 12294.dasm - Xunit.Assert:Equal[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]) (Tier0)
        -133 (-40.92 % of base) : 7701.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-40.82 % of base) : 9.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.82 % of base) : 1576.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.82 % of base) : 9974.dasm - System.Linq.Enumerable:Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
         -81 (-40.50 % of base) : 9543.dasm - Xunit.Assert:Single[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
        -404 (-40.28 % of base) : 4756.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -404 (-40.28 % of base) : 2608.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 3203.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)


librariestestsnotieredcompilation.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: 838544 (overridden on cmd)
Total bytes of diff: 832389 (overridden on cmd)
Total bytes of delta: -6155 (-0.73 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          77 : 6273.dasm (12.34 % of base)
          70 : 4167.dasm (6.78 % of base)
          61 : 9724.dasm (13.86 % of base)
          50 : 4868.dasm (2.72 % of base)
          45 : 848.dasm (20.55 % of base)
          32 : 2920.dasm (11.11 % of base)
          25 : 10512.dasm (9.12 % of base)
          24 : 9821.dasm (14.20 % of base)
          24 : 9733.dasm (8.45 % of base)
          21 : 9711.dasm (6.84 % of base)
          20 : 6688.dasm (7.72 % of base)
          17 : 68.dasm (5.65 % of base)
          15 : 8714.dasm (15.79 % of base)
          13 : 6398.dasm (20.31 % of base)
          12 : 1801.dasm (13.33 % of base)
          10 : 5590.dasm (7.69 % of base)
           9 : 5522.dasm (2.97 % of base)
           9 : 2029.dasm (1.94 % of base)
           8 : 5588.dasm (7.34 % of base)
           5 : 3414.dasm (0.82 % of base)

Top file improvements (bytes):
        -299 : 9687.dasm (-25.56 % of base)
        -270 : 3079.dasm (-23.28 % of base)
        -270 : 969.dasm (-21.84 % of base)
        -177 : 9.dasm (-33.27 % of base)
        -171 : 12.dasm (-34.20 % of base)
        -163 : 736.dasm (-21.39 % of base)
        -155 : 3327.dasm (-31.19 % of base)
        -152 : 430.dasm (-25.12 % of base)
        -151 : 66.dasm (-25.00 % of base)
        -147 : 3086.dasm (-18.89 % of base)
        -147 : 3434.dasm (-10.10 % of base)
        -143 : 8673.dasm (-37.34 % of base)
        -132 : 4483.dasm (-22.49 % of base)
        -126 : 8710.dasm (-14.42 % of base)
        -112 : 461.dasm (-21.05 % of base)
        -111 : 443.dasm (-20.71 % of base)
        -102 : 3435.dasm (-29.06 % of base)
         -95 : 6396.dasm (-15.45 % of base)
         -92 : 828.dasm (-26.29 % of base)
         -83 : 595.dasm (-22.99 % of base)

55 total files with Code Size differences (34 improved, 21 regressed), 20 unchanged.

Top method regressions (bytes):
          77 (12.34 % of base) : 6273.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          70 (6.78 % of base) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          61 (13.86 % of base) : 9724.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          50 (2.72 % of base) : 4868.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
          45 (20.55 % of base) : 848.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          32 (11.11 % of base) : 2920.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          25 (9.12 % of base) : 10512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          24 (14.20 % of base) : 9821.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          24 (8.45 % of base) : 9733.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          21 (6.84 % of base) : 9711.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          20 (7.72 % of base) : 6688.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          17 (5.65 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          15 (15.79 % of base) : 8714.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          13 (20.31 % of base) : 6398.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          12 (13.33 % of base) : 1801.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          10 (7.69 % of base) : 5590.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
           9 (1.94 % of base) : 2029.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
           9 (2.97 % of base) : 5522.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
           8 (7.34 % of base) : 5588.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           5 (0.82 % of base) : 3414.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Func`3[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],System.Collections.Generic.KeyValuePair`2[System.__Canon,int],ubyte]):ubyte (FullOpts)

Top method improvements (bytes):
        -299 (-25.56 % of base) : 9687.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
        -270 (-21.84 % of base) : 969.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -270 (-23.28 % of base) : 3079.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -177 (-33.27 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -171 (-34.20 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -163 (-21.39 % of base) : 736.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -155 (-31.19 % of base) : 3327.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -152 (-25.12 % of base) : 430.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-25.00 % of base) : 66.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -147 (-18.89 % of base) : 3086.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:PathExistsBetween[System.__Canon](System.__Canon,System.__Canon,System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):System.Collections.Immutable.ImmutableStack`1[System.__Canon] (FullOpts)
        -147 (-10.10 % of base) : 3434.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
        -143 (-37.34 % of base) : 8673.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -132 (-22.49 % of base) : 4483.dasm - Roslyn.Utilities.EnumerableExtensions:IsEmpty[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
        -126 (-14.42 % of base) : 8710.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:ForAttributeWithMetadataName[System.__Canon](System.String,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Func`3[Microsoft.CodeAnalysis.GeneratorAttributeSyntaxContext,System.Threading.CancellationToken,System.__Canon]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]:this (FullOpts)
        -112 (-21.05 % of base) : 461.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
        -111 (-20.71 % of base) : 443.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -102 (-29.06 % of base) : 3435.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -95 (-15.45 % of base) : 6396.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
         -92 (-26.29 % of base) : 828.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -83 (-22.99 % of base) : 595.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)

Top method regressions (percentages):
          45 (20.55 % of base) : 848.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          13 (20.31 % of base) : 6398.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          15 (15.79 % of base) : 8714.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          24 (14.20 % of base) : 9821.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          61 (13.86 % of base) : 9724.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          12 (13.33 % of base) : 1801.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          77 (12.34 % of base) : 6273.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          32 (11.11 % of base) : 2920.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          25 (9.12 % of base) : 10512.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          24 (8.45 % of base) : 9733.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          20 (7.72 % of base) : 6688.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          10 (7.69 % of base) : 5590.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
           8 (7.34 % of base) : 5588.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          21 (6.84 % of base) : 9711.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          70 (6.78 % of base) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
          17 (5.65 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           9 (2.97 % of base) : 5522.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          50 (2.72 % of base) : 4868.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
           9 (1.94 % of base) : 2029.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
           3 (1.38 % of base) : 2352.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.ValueTuple`2[int,System.__Canon]](System.Collections.Generic.List`1[System.ValueTuple`2[int,System.__Canon]]):System.Span`1[System.ValueTuple`2[int,System.__Canon]] (FullOpts)

Top method improvements (percentages):
        -143 (-37.34 % of base) : 8673.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -171 (-34.20 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -177 (-33.27 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 2202.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -64 (-32.00 % of base) : 5801.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
        -155 (-31.19 % of base) : 3327.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
         -59 (-29.50 % of base) : 3187.dasm - System.Linq.Enumerable:Contains[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]):ubyte (FullOpts)
        -102 (-29.06 % of base) : 3435.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -37 (-28.91 % of base) : 2283.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.ValueTuple`3[int,int,System.__Canon]]():System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
         -18 (-28.57 % of base) : 4674.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -18 (-28.57 % of base) : 7396.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -63 (-28.51 % of base) : 49.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)
         -66 (-28.09 % of base) : 5560.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Where[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
         -41 (-27.89 % of base) : 4245.dasm - Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:ToListAndFree[System.__Canon](byref):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         -18 (-27.27 % of base) : 2327.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,System.__Canon] (FullOpts)
         -18 (-27.27 % of base) : 3699.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -37 (-27.21 % of base) : 562.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         -37 (-26.62 % of base) : 1003.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.TaskAwaiter`1[System.__Canon],Xunit.Sdk.TestAssemblyRunner`1+<RunAsync>d__41[System.__Canon]](byref,byref,byref) (FullOpts)
         -92 (-26.29 % of base) : 828.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -18 (-26.09 % of base) : 4731.dasm - System.Collections.Immutable.ImmutableDictionary:ToImmutableDictionary[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (FullOpts)


realworld.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: 1799819 (overridden on cmd)
Total bytes of diff: 1783459 (overridden on cmd)
Total bytes of delta: -16360 (-0.91 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         177 : 3473.dasm (17.12 % of base)
         171 : 1207.dasm (3.85 % of base)
         128 : 1173.dasm (36.78 % of base)
         122 : 6890.dasm (17.33 % of base)
          91 : 14945.dasm (74.59 % of base)
          91 : 919.dasm (74.59 % of base)
          46 : 5319.dasm (219.05 % of base)
          45 : 3809.dasm (62.50 % of base)
          45 : 671.dasm (75.00 % of base)
          44 : 6557.dasm (15.07 % of base)
          44 : 6560.dasm (14.86 % of base)
          44 : 6536.dasm (14.57 % of base)
          44 : 6547.dasm (14.57 % of base)
          16 : 6482.dasm (13.79 % of base)
          13 : 9704.dasm (12.26 % of base)
          10 : 12352.dasm (5.26 % of base)
          10 : 2470.dasm (7.63 % of base)
          10 : 5198.dasm (4.63 % of base)
           6 : 2827.dasm (3.82 % of base)
           6 : 2860.dasm (2.62 % of base)

Top file improvements (bytes):
        -266 : 3899.dasm (-23.25 % of base)
        -262 : 10387.dasm (-26.44 % of base)
        -184 : 9638.dasm (-28.79 % of base)
        -177 : 1835.dasm (-33.27 % of base)
        -177 : 233.dasm (-33.27 % of base)
        -171 : 14657.dasm (-34.20 % of base)
        -171 : 578.dasm (-34.20 % of base)
        -160 : 6725.dasm (-22.32 % of base)
        -160 : 8271.dasm (-22.99 % of base)
        -152 : 1839.dasm (-25.12 % of base)
        -152 : 237.dasm (-25.12 % of base)
        -151 : 530.dasm (-25.00 % of base)
        -151 : 5792.dasm (-10.98 % of base)
        -151 : 14637.dasm (-25.00 % of base)
        -148 : 5585.dasm (-22.49 % of base)
        -144 : 8996.dasm (-24.91 % of base)
        -140 : 5895.dasm (-28.87 % of base)
        -135 : 10386.dasm (-20.74 % of base)
        -119 : 8119.dasm (-25.54 % of base)
        -118 : 6885.dasm (-23.89 % of base)

65 total files with Code Size differences (45 improved, 20 regressed), 20 unchanged.

Top method regressions (bytes):
         177 (17.12 % of base) : 3473.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
         171 (3.85 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
         128 (36.78 % of base) : 1173.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
         122 (17.33 % of base) : 6890.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          91 (74.59 % of base) : 14945.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          91 (74.59 % of base) : 919.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          46 (219.05 % of base) : 5319.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          45 (62.50 % of base) : 3809.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
          45 (75.00 % of base) : 671.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          44 (15.07 % of base) : 6557.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.86 % of base) : 6560.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.57 % of base) : 6547.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.57 % of base) : 6536.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          16 (13.79 % of base) : 6482.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          13 (12.26 % of base) : 9704.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          10 (5.26 % of base) : 12352.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          10 (7.63 % of base) : 2470.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          10 (4.63 % of base) : 5198.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
           6 (2.62 % of base) : 2860.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
           6 (3.82 % of base) : 2827.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)

Top method improvements (bytes):
        -266 (-23.25 % of base) : 3899.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
        -262 (-26.44 % of base) : 10387.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:split[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):System.Tuple`3[System.__Canon,ubyte,System.__Canon] (FullOpts)
        -184 (-28.79 % of base) : 9638.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip3[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`3[System.__Canon,System.__Canon,System.__Canon] (FullOpts)
        -177 (-33.27 % of base) : 1835.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -171 (-34.20 % of base) : 14657.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -171 (-34.20 % of base) : 578.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -160 (-22.32 % of base) : 6725.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -160 (-22.99 % of base) : 8271.dasm - Microsoft.FSharp.Primitives.Basics.List:mapFold[ubyte,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[ubyte,System.__Canon],ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,ubyte] (FullOpts)
        -152 (-25.12 % of base) : 1839.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -152 (-25.12 % of base) : 237.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-10.98 % of base) : 5792.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -151 (-25.00 % of base) : 530.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -151 (-25.00 % of base) : 14637.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -148 (-22.49 % of base) : 5585.dasm - Microsoft.FSharp.Primitives.Basics.List:partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -144 (-24.91 % of base) : 8996.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -140 (-28.87 % of base) : 5895.dasm - Microsoft.FSharp.Primitives.Basics.List:unzip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -135 (-20.74 % of base) : 10386.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:union[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
        -119 (-25.54 % of base) : 8119.dasm - Internal.Utilities.Library.List:loop@386-20[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -118 (-23.89 % of base) : 6885.dasm - Microsoft.FSharp.Primitives.Basics.List:zip[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          46 (219.05 % of base) : 5319.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          45 (75.00 % of base) : 671.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (74.59 % of base) : 14945.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          91 (74.59 % of base) : 919.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          45 (62.50 % of base) : 3809.dasm - Microsoft.FSharp.Collections.SeqModule+groupByRefType@1343-1[System.__Canon,System.__Canon]:Invoke(System.Collections.Generic.KeyValuePair`2[Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers+StructBox`1[System.__Canon],System.__Canon]):Microsoft.FSharp.Core.Unit:this (FullOpts)
         128 (36.78 % of base) : 1173.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
         122 (17.33 % of base) : 6890.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         177 (17.12 % of base) : 3473.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
          44 (15.07 % of base) : 6557.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.86 % of base) : 6560.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.57 % of base) : 6547.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          44 (14.57 % of base) : 6536.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          16 (13.79 % of base) : 6482.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          13 (12.26 % of base) : 9704.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          10 (7.63 % of base) : 2470.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          10 (5.26 % of base) : 12352.dasm - <StartupCode$FSharp-Core>.$Set:loop@914-47[System.__Canon](System.Collections.IEqualityComparer,System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          10 (4.63 % of base) : 5198.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         171 (3.85 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
           6 (3.82 % of base) : 2827.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           6 (2.62 % of base) : 2860.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)

Top method improvements (percentages):
        -171 (-34.20 % of base) : 14657.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -171 (-34.20 % of base) : 578.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -177 (-33.27 % of base) : 1835.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -177 (-33.27 % of base) : 233.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -43 (-32.82 % of base) : 12356.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 11071.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 13766.dasm - System.Linq.Enumerable:Empty[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]():System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
         -85 (-32.44 % of base) : 9737.dasm - Internal.Utilities.Library.Extras+ListSet:setify[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -43 (-32.33 % of base) : 8206.dasm - Microsoft.FSharp.Collections.ListModule:GroupBy[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -61 (-31.61 % of base) : 5891.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -63 (-31.03 % of base) : 6312.dasm - Internal.Utilities.Library.NameMap:ofKeyedList[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon] (FullOpts)
         -63 (-31.03 % of base) : 10593.dasm - Internal.Utilities.Library.NameMultiMap:chooseRange[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -63 (-30.73 % of base) : 13096.dasm - Internal.Utilities.Collections.Zmap:chooseL[System.__Canon,int,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.Tagged.Map`3[System.__Canon,int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -63 (-30.58 % of base) : 9477.dasm - Internal.Utilities.Library.List:splitChoose[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
         -81 (-29.78 % of base) : 5377.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Bind[System.Threading.CancellationToken,System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[System.Threading.CancellationToken],Microsoft.FSharp.Core.FSharpFunc`2[System.Threading.CancellationToken,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -81 (-29.67 % of base) : 5632.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Combine[System.__Canon](FSharp.Compiler.BuildGraph+NodeCode`1[Microsoft.FSharp.Core.Unit],FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -63 (-29.58 % of base) : 5369.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Delay[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -59 (-29.50 % of base) : 5630.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CreateForLoopAsync[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.FSharpAsync`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -41 (-29.08 % of base) : 8867.dasm - Microsoft.FSharp.Collections.MapModule:Iterate[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]) (FullOpts)
         -41 (-29.08 % of base) : 14255.dasm - Microsoft.FSharp.Collections.MapModule:TryPick[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)