Assembly Diffs

linux arm64

Diffs are based on 90,968 contexts (39,217 MinOpts, 51,751 FullOpts).

MISSED contexts: base: 3,450 (2.42%), diff: 47,377 (33.29%)

Overall (-92,984 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,856 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 2,956,824 -20,412
benchmarks.run_tiered.linux.arm64.checked.mch 2,289,652 -17,264
coreclr_tests.run.linux.arm64.checked.mch 535,608 -288
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 1,695,136 -17,860
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,677,192 -17,112

MinOpts (-48,108 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 2,119,436 -15,648
benchmarks.run_tiered.linux.arm64.checked.mch 2,047,816 -15,788
coreclr_tests.run.linux.arm64.checked.mch 397,428 -140
libraries_tests.run.linux.arm64.Release.mch 1,599,544 -16,532

FullOpts (-44,876 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 987,432 -5,876
benchmarks.run_pgo.linux.arm64.checked.mch 837,388 -4,764
benchmarks.run_tiered.linux.arm64.checked.mch 241,836 -1,476
coreclr_tests.run.linux.arm64.checked.mch 138,180 -148
libraries.pmi.linux.arm64.checked.mch 1,340,444 -6,676
libraries_tests.run.linux.arm64.Release.mch 95,592 -1,328
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 985,512 -7,496
realworld.run.linux.arm64.checked.mch 1,664,872 -17,112

Example diffs

benchmarks.run.linux.arm64.checked.mch

-44 (-25.00%) : 4382.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 (-25.00%) : 2140.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 (-24.44%) : 4475.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%) : 1415.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 (+5.56%) : 10098.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%) : 4194.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%) : 24105.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic1ubyte

@@ -19,28 +19,13 @@ G_M32739_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_M32739_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_M32739_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M32739_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_M32739_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M32739_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32739_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_M32739_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_M32739_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M32739_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M32739_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=9911801c) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=9911801c) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateHiddenCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (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%) : 24566.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic1System.__Canon

@@ -19,28 +19,13 @@ G_M14281_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_M14281_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_M14281_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M14281_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_M14281_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M14281_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M14281_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_M14281_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_M14281_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M14281_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M14281_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=cbf4c836) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[System.__Canon] (Instrumented Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=cbf4c836) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[System.__Canon](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[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)

-36 (-31.03%) : 24107.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic1ubyte

@@ -19,28 +19,13 @@ G_M15908_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_M15908_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_M15908_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M15908_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_M15908_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M15908_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15908_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_M15908_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_M15908_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M15908_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M15908_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=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (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%) : 21208.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.18) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.21) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.18) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.36) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.72) 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.43) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.43) 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.72) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.00) 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.18, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.18, 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.18 PerfScore 1.25 -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.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.11 -G_M58319_IG06: ; bbWeight=0.18, 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.18 PerfScore 1.25 -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.18 PerfScore 2.33 +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.26, 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.33, 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%) : 25052.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.35) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.35) 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.18 -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.18 -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.20 +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.10, 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.20, 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%) : 25708.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.18) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.22) long -> x1 single-def -; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x19 single-def
+; V00 this [V00,T02] ( 3, 2.18) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.37) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.18) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.74) 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.47) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.47) 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.74) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.03) 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.18, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.18, 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.18 PerfScore 1.29 -G_M58319_IG04: ; bbWeight=0.15, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.15 PerfScore 0.15 -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.11 -G_M58319_IG06: ; bbWeight=0.18, 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.18 PerfScore 1.29 -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.18 PerfScore 2.39 +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.33, 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.39, 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.linux.arm64.checked.mch

-36 (-31.03%) : 10208.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%) : 11348.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 (-30.00%) : 2245.dasm - System.Linq.Enumerable:DistinctSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -19,28 +19,13 @@ G_M34864_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_M34864_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_M34864_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M34864_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_M34864_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M34864_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34864_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_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; gcrRegs +[x1] @@ -51,13 +36,13 @@ G_M34864_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x3, [x3] blr x3 ; gcrRegs -[x1] +[x0]
- ;; size=32 bbWeight=1 PerfScore 10.00 -G_M34864_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=1 PerfScore 15.50 +G_M34864_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30 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=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 84, prolog size 12, PerfScore 22.00, instruction count 21, allocated bytes for code 84 (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: @@ -68,7 +53,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%) : 19068.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:TryComplete(System.Exception):ubyte:this (Tier0)

@@ -91,9 +91,11 @@ G_M33714_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #29
- 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] @@ -183,7 +185,7 @@ G_M33714_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ bl CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
; gcr arg pop 0 str x0, [fp, #0x48] // [V11 tmp4] ;; size=24 bbWeight=0.20 PerfScore 1.10 @@ -237,7 +239,7 @@ G_M33714_IG16: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ bl CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
; gcr arg pop 0 str x0, [fp, #0x38] // [V13 tmp6] ;; size=24 bbWeight=0.20 PerfScore 1.10

+0 (0.00%) : 19380.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%) : 1552.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

coreclr_tests.run.linux.arm64.checked.mch

-36 (-28.12%) : 281.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, #0xD1FFAB1E 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)

-32 (-25.81%) : 2229.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefaultSystem.__Canon,int:byref (Instrumented Tier1)

@@ -7,16 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def
;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr" -; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov x21, x3 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 6.00
-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cmp x2, #32 - ble G_M252_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x2, [x1, #0x20] - cbz x2, G_M252_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref - mov x0, x2 - b G_M252_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90 -G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
mov x1, x19 ; gcrRegs +[x1] mov x2, x20 @@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 { movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4]
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1 PerfScore 8.50 +G_M252_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 @@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -85,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ 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)

-32 (-25.81%) : 2937.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefaultSystem.__Canon,int:byref (Tier1)

@@ -7,16 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def
;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr" -; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov x21, x3 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 6.00
-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cmp x2, #32 - ble G_M252_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x2, [x1, #0x20] - cbz x2, G_M252_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref - mov x0, x2 - b G_M252_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90 -G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
mov x1, x19 ; gcrRegs +[x1] mov x2, x20 @@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 { movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4]
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1 PerfScore 8.50 +G_M252_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 @@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
; ============================================================ Unwind Info: @@ -85,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ 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)

+12 (+7.89%) : 4088.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.Object> ;# 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_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x58] // [V00 arg0] ;; size=12 bbWeight=1 PerfScore 2.50 G_M43438_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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -54,13 +59,13 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ;; size=132 bbWeight=1 PerfScore 38.50
+ ;; size=144 bbWeight=1 PerfScore 47.00
G_M43438_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=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):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%) : 4120.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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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%) : 4393.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, #0xD1FFAB1E 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, #0xD1FFAB1E 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.linux.arm64.checked.mch

-24 (-27.27%) : 1545.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%) : 1531.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%) : 786.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%) : 1001.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%) : 5430.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

+24 (+23.08%) : 5432.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

libraries_tests.run.linux.arm64.Release.mch

-36 (-33.33%) : 4650.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)

-24 (-31.58%) : 15619.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] (Tier1)
+; 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] (Tier1)
; ============================================================ 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)

+0 (0.00%) : 15880.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisResultBuilder:GetPendingAnalyzers(System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Nullable1[System.ValueTuple2[Microsoft.CodeAnalysis.Diagnostics.SourceOrAdditionalFile,ubyte]]):System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]:this (Tier0)

@@ -121,9 +121,11 @@ G_M23760_IG05: ; 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] @@ -139,7 +141,7 @@ G_M23760_IG05: ; 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] // [V15 tmp8] @@ -148,9 +150,11 @@ G_M23760_IG05: ; 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] @@ -173,7 +177,8 @@ G_M23760_IG05: ; 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 ldr x15, [fp, #0x18] // [V15 tmp8] ; gcrRegs +[x15] @@ -182,6 +187,7 @@ G_M23760_IG05: ; 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] // [V15 tmp8] ; gcrRegs +[x0] str x0, [fp, #0x30] // [V13 tmp6]

+8 (+2.13%) : 5649.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

@@ -13,24 +13,25 @@ ; V01 arg1 [V01,T00] ( 10, 5.20) ref -> x19 class-hnd single-def <System.Object> ; V02 arg2 [V02,T01] ( 7, 4.40) ref -> x20 class-hnd single-def <System.Object> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T08] ( 3, 0.87) int -> x21 "guarded devirt return temp"
+; V04 tmp1 [V04,T09] ( 3, 0.80) int -> x0 "guarded devirt return temp"
; V05 tmp2 [V05,T07] ( 4, 1.49) ref -> x19 class-hnd exact single-def "guarded devirt this exact temp" <System.String> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V09 tmp6 [V09,T04] ( 5, 1.63) ref -> x20 class-hnd exact "Inline stloc first use temp" <System.String> -; V10 tmp7 [V10,T05] ( 2, 1.60) byref -> x0 single-def "impAppendStmt"
+; V08 tmp5 [V08,T08] ( 4, 1.49) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V09 tmp6 [V09,T05] ( 2, 1.60) byref -> x0 single-def "impAppendStmt" +;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V16 tmp13 [V16,T06] ( 2, 1.60) int -> x0 "Single return block return value" -; V17 cse0 [V17,T03] ( 2, 2 ) ref -> x1 "CSE - aggressive"
+; V15 tmp12 [V15,T06] ( 2, 1.60) int -> x0 "Single return block return value" +; V16 cse0 [V16,T04] ( 2, 2 ) ref -> x1 "CSE - aggressive" +; V17 rat0 [V17,T03] ( 5, 3 ) ref -> x20 "replacement local" +; V18 rat1 [V18,T10] ( 2, 0.80) long -> x2 "CSE for expectedClsNode"
; ; Lcl frame size = 8
-G_M51920_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51920_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] @@ -61,7 +62,7 @@ G_M51920_IG03: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00 ldr x0, [x21, #0x08] ; gcrRegs +[x0] cmp x0, x19
- beq G_M51920_IG13
+ beq G_M51920_IG16
cmp x19, x20 bne G_M51920_IG06 ;; size=20 bbWeight=1 PerfScore 6.00 @@ -79,33 +80,36 @@ G_M51920_IG06: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=380 ; gcrRegs +[x19-x21] ldr x2, [x21, #0x20] ; gcrRegs +[x2]
- cbnz x2, G_M51920_IG15 - cbz x19, G_M51920_IG13
+ cbnz x2, G_M51920_IG18 + cbz x19, G_M51920_IG16
ldr x2, [x19] ; gcrRegs -[x2] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x2, x1
- bne G_M51920_IG17 - cbz x20, G_M51920_IG12
+ bne G_M51920_IG14 + cbz x20, G_M51920_IG08
;; size=40 bbWeight=0.40 PerfScore 4.80
-G_M51920_IG07: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M51920_IG07: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
- ldr x2, [x20] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x2, x1 - bne G_M51920_IG12 - ;; size=24 bbWeight=0.14 PerfScore 0.86 -G_M51920_IG08: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x1, [x20] + cmp x1, x2 + bne G_M51920_IG13 + ;; size=24 bbWeight=0.20 PerfScore 1.20 +G_M51920_IG08: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M51920_IG20 + ;; size=4 bbWeight=0.40 PerfScore 0.40 +G_M51920_IG09: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19, #0x08] ldr w1, [x20, #0x08] cmp w2, w1
- bne G_M51920_IG12
+ bne G_M51920_IG20
;; size=16 bbWeight=0.29 PerfScore 2.14
-G_M51920_IG09: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M51920_IG10: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
add x0, x19, #12 ; byrRegs +[x0] ldr w2, [x19, #0x08] @@ -121,32 +125,50 @@ G_M51920_IG09: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs -[x19-x20] ; byrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w21, w0 - ;; size=44 bbWeight=0.40 PerfScore 4.60 -G_M51920_IG10: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb w0, w21
+ ;; size=40 bbWeight=0.40 PerfScore 4.40 +G_M51920_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + uxtb w0, w0
uxtb w0, w0 ;; size=8 bbWeight=0.40 PerfScore 0.40
-G_M51920_IG11: ; bbWeight=0.40, epilog, nogc, extend
+G_M51920_IG12: ; bbWeight=0.40, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.40 PerfScore 2.00
-G_M51920_IG12: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w21, wzr - b G_M51920_IG10 - ;; size=8 bbWeight=0.07 PerfScore 0.11 -G_M51920_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51920_IG13: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x20, xzr + ; gcrRegs +[x20] + b G_M51920_IG08 + ;; size=8 bbWeight=0.10 PerfScore 0.15 +G_M51920_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + mov x1, x20 + ; gcrRegs +[x1] + ldr x2, [x19] + ldr x2, [x2, #0x48] + ldr x2, [x2, #0x10] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M51920_IG15: ; bbWeight=0, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30 + br x2 + ; gcr arg pop 0 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M51920_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x1 x19-x20]
mov w0, wzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M51920_IG17: ; bbWeight=0, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M51920_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19-x21] ldr x0, [x21, #0x20] ; gcrRegs +[x0] @@ -160,32 +182,20 @@ G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=380000 ldr wzr, [x0] ldr x3, [x11] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M51920_IG19: ; bbWeight=0, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 br x3 ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0-x2 x21] - mov x0, x19 - ; gcrRegs +[x0] - mov x1, x20 - ; gcrRegs +[x1] - ldr x2, [x19] - ldr x2, [x2, #0x48] - ldr x2, [x2, #0x10] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - br x2 - ; gcr arg pop 0 - ;; size=16 bbWeight=0 PerfScore 0.00
+G_M51920_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0-x2 x19-x21] + mov w0, wzr + b G_M51920_IG11 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 376, prolog size 28, PerfScore 38.71, instruction count 94, allocated bytes for code 376 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
+; Total bytes of code 384, prolog size 28, PerfScore 39.29, instruction count 96, allocated bytes for code 384 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -196,7 +206,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
+ Function Length : 96 (0x00060) Actual length = 384 (0x000180)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+6.25%) : 4838.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)

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-24 (-31.58%) : 2341.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%) : 2235.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%) : 599.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%) : 6701.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%) : 5544.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%) : 6218.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%) : 11339.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%) : 2890.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%) : 3718.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%) : 6462.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%) : 6459.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%) : 9493.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 143 112 5 26 -5,944 +68
benchmarks.run_pgo.linux.arm64.checked.mch 387 326 33 28 -20,676 +264
benchmarks.run_tiered.linux.arm64.checked.mch 266 229 1 36 -17,272 +8
coreclr_tests.run.linux.arm64.checked.mch 83 52 26 5 -464 +176
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 364 214 40 110 -7,760 +1,084
libraries_tests.run.linux.arm64.Release.mch 276 261 2 13 -17,888 +28
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 193 138 14 41 -7,900 +404
realworld.run.linux.arm64.checked.mch 350 317 14 19 -17,520 +408
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
2,062 1,649 135 278 -95,424 +2,440

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 4,984 3 4,981 479 (4.91%) 4,380 (44.87%)
benchmarks.run_pgo.linux.arm64.checked.mch 17,795 14,290 3,505 335 (1.25%) 8,686 (32.32%)
benchmarks.run_tiered.linux.arm64.checked.mch 15,308 13,287 2,021 89 (0.43%) 5,233 (24.99%)
coreclr_tests.run.linux.arm64.checked.mch 2,283 1,393 890 40 (0.84%) 2,080 (43.71%)
libraries.crossgen2.linux.arm64.checked.mch 8,252 10 8,242 0 (0.00%) 2,959 (25.49%)
libraries.pmi.linux.arm64.checked.mch 13,937 0 13,937 297 (1.43%) 6,428 (30.96%)
libraries_tests.run.linux.arm64.Release.mch 10,746 10,122 624 59 (0.37%) 4,734 (29.82%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 5,023 0 5,023 849 (9.00%) 4,012 (42.53%)
realworld.run.linux.arm64.checked.mch 9,190 110 9,080 1,047 (7.24%) 4,872 (33.70%)
smoke_tests.nativeaot.linux.arm64.checked.mch 3,450 2 3,448 255 (3.25%) 3,993 (50.94%)
90,968 39,217 51,751 3,450 (2.42%) 47,377 (33.29%)

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: 987856 (overridden on cmd)
Total bytes of diff: 981980 (overridden on cmd)
Total bytes of delta: -5876 (-0.59 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 6825.dasm (3.83 % of base)
          20 : 4194.dasm (6.25 % of base)
           4 : 10006.dasm (4.55 % of base)
           4 : 1415.dasm (4.55 % of base)
           4 : 10098.dasm (5.56 % of base)

Top file improvements (bytes):
        -328 : 7957.dasm (-23.98 % of base)
        -212 : 240.dasm (-30.99 % of base)
        -212 : 736.dasm (-33.12 % of base)
        -208 : 4294.dasm (-15.76 % of base)
        -184 : 244.dasm (-24.34 % of base)
        -184 : 694.dasm (-26.14 % of base)
        -156 : 1487.dasm (-29.32 % of base)
        -144 : 5793.dasm (-15.06 % of base)
        -136 : 6889.dasm (-30.63 % of base)
        -132 : 4785.dasm (-19.30 % of base)
        -128 : 5518.dasm (-25.81 % of base)
        -128 : 632.dasm (-18.71 % of base)
        -128 : 2226.dasm (-27.12 % of base)
        -100 : 5583.dasm (-24.04 % of base)
        -100 : 7842.dasm (-20.49 % of base)
        -100 : 209.dasm (-19.84 % of base)
        -100 : 8777.dasm (-15.82 % of base)
         -92 : 1170.dasm (-22.12 % of base)
         -72 : 1249.dasm (-25.00 % of base)
         -72 : 1486.dasm (-23.38 % of base)

48 total files with Code Size differences (43 improved, 5 regressed), 22 unchanged.

Top method regressions (bytes):
          36 (3.83 % of base) : 6825.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          20 (6.25 % of base) : 4194.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) : 1415.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (5.56 % of base) : 10098.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 10006.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 7957.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) : 240.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) : 736.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-15.76 % of base) : 4294.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -184 (-24.34 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -184 (-26.14 % of base) : 694.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) : 1487.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) : 5793.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) : 6889.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 4785.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) : 2226.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) : 5518.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 632.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-15.82 % of base) : 8777.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 7842.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 5583.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) : 209.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) : 1170.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
         -72 (-13.33 % of base) : 7853.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) : 243.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) : 4194.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) : 10098.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 1415.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (4.55 % of base) : 10006.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
          36 (3.83 % of base) : 6825.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 736.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -212 (-30.99 % of base) : 240.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) : 9165.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 6889.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 1487.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) : 2226.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) : 7757.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 694.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) : 5518.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 1249.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) : 4382.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-25.00 % of base) : 2140.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (FullOpts)
         -44 (-24.44 % of base) : 7488.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 4475.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) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-24.04 % of base) : 5583.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) : 243.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) : 7957.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) : 8974.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -72 (-23.38 % of base) : 1486.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`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: 2956824 (overridden on cmd)
Total bytes of diff: 2936412 (overridden on cmd)
Total bytes of delta: -20412 (-0.69 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 13079.dasm (6.06 % of base)
           8 : 16195.dasm (6.06 % of base)
           8 : 17731.dasm (6.06 % of base)
           8 : 18579.dasm (6.06 % of base)
           8 : 21208.dasm (6.06 % of base)
           8 : 25052.dasm (6.06 % of base)
           8 : 25382.dasm (6.06 % of base)
           8 : 25708.dasm (6.06 % of base)
           8 : 4295.dasm (6.06 % of base)
           8 : 4399.dasm (6.06 % of base)
           8 : 4511.dasm (6.06 % of base)
           8 : 4927.dasm (6.06 % of base)
           8 : 5096.dasm (6.06 % of base)
           8 : 6396.dasm (6.06 % of base)
           8 : 8820.dasm (6.06 % of base)
           8 : 9079.dasm (6.06 % of base)
           8 : 15836.dasm (6.06 % of base)
           8 : 13356.dasm (6.06 % of base)
           8 : 13599.dasm (6.06 % of base)
           8 : 22238.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 2536.dasm (-45.34 % of base)
        -428 : 864.dasm (-42.63 % of base)
        -372 : 2407.dasm (-37.35 % of base)
        -372 : 872.dasm (-35.36 % of base)
        -316 : 4953.dasm (-40.10 % of base)
        -316 : 8553.dasm (-37.44 % of base)
        -296 : 5775.dasm (-39.78 % of base)
        -268 : 15534.dasm (-40.36 % of base)
        -260 : 10704.dasm (-40.88 % of base)
        -260 : 2240.dasm (-27.66 % of base)
        -260 : 23805.dasm (-37.36 % of base)
        -240 : 343.dasm (-32.97 % of base)
        -212 : 23855.dasm (-33.12 % of base)
        -212 : 24918.dasm (-33.12 % of base)
        -212 : 20710.dasm (-33.12 % of base)
        -204 : 722.dasm (-30.18 % of base)
        -204 : 8042.dasm (-23.50 % of base)
        -204 : 8424.dasm (-32.28 % of base)
        -204 : 9611.dasm (-30.00 % of base)
        -204 : 10708.dasm (-34.46 % of base)

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

Top method regressions (bytes):
           8 (6.06 % of base) : 13079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16195.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17731.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 18579.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21208.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25382.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4295.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4399.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4511.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5096.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8820.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15836.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 13356.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 13599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22238.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) : 864.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) : 2536.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 872.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 2407.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) : 4953.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) : 8553.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 5775.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) : 15534.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 (-40.88 % of base) : 10704.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 (-37.36 % of base) : 23805.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 2240.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 343.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 23855.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 24918.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 20710.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-32.28 % of base) : 8424.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-23.50 % of base) : 8042.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
        -204 (-30.00 % of base) : 9611.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-34.46 % of base) : 10708.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) : 722.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):
           8 (6.06 % of base) : 13079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 16195.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17731.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 18579.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21208.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25382.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 25708.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4295.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4399.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4511.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 4927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5096.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 8820.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9079.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15836.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 13356.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 13599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22238.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) : 2536.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 864.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) : 7703.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.82 % of base) : 8284.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -148 (-41.57 % of base) : 5091.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -260 (-40.88 % of base) : 10704.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)
        -268 (-40.36 % of base) : 15534.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) : 4953.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) : 5775.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) : 6727.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
         -92 (-38.33 % of base) : 8884.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
        -316 (-37.44 % of base) : 8553.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -260 (-37.36 % of base) : 23805.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 2407.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) : 2521.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) : 4952.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) : 17715.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 7557.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) : 13227.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) : 3946.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.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: 2289652 (overridden on cmd)
Total bytes of diff: 2272388 (overridden on cmd)
Total bytes of delta: -17264 (-0.75 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 1552.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 2263.dasm (-45.34 % of base)
        -428 : 764.dasm (-42.63 % of base)
        -372 : 2164.dasm (-37.96 % of base)
        -372 : 771.dasm (-35.36 % of base)
        -316 : 3177.dasm (-40.10 % of base)
        -316 : 12391.dasm (-37.44 % of base)
        -296 : 9341.dasm (-39.78 % of base)
        -268 : 6598.dasm (-40.36 % of base)
        -260 : 2003.dasm (-27.66 % of base)
        -260 : 4152.dasm (-40.88 % of base)
        -260 : 17481.dasm (-37.36 % of base)
        -240 : 329.dasm (-32.97 % of base)
        -212 : 5212.dasm (-33.12 % of base)
        -204 : 12343.dasm (-32.28 % of base)
        -204 : 5628.dasm (-23.50 % of base)
        -204 : 667.dasm (-30.18 % of base)
        -204 : 6722.dasm (-34.46 % of base)
        -204 : 7211.dasm (-30.00 % of base)
        -204 : 18480.dasm (-25.76 % of base)
        -184 : 15578.dasm (-15.86 % of base)

51 total files with Code Size differences (50 improved, 1 regressed), 29 unchanged.

Top method regressions (bytes):
           8 (6.06 % of base) : 1552.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) : 764.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) : 2263.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 771.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)
        -316 (-40.10 % of base) : 3177.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) : 12391.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 9341.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) : 6598.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 (-40.88 % of base) : 4152.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -260 (-37.36 % of base) : 17481.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 2003.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 329.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 5212.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.76 % of base) : 18480.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-32.28 % of base) : 12343.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 7211.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-23.50 % of base) : 5628.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -204 (-34.46 % of base) : 6722.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) : 667.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 (-15.86 % of base) : 15578.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):
           8 (6.06 % of base) : 1552.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) : 2263.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 764.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) : 11810.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -148 (-41.57 % of base) : 3312.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-41.07 % of base) : 12225.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -260 (-40.88 % of base) : 4152.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (Tier0)
        -268 (-40.36 % of base) : 6598.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) : 3177.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) : 9341.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) : 18759.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 3581.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
         -92 (-38.33 % of base) : 7291.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) : 8867.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) : 12391.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -148 (-37.37 % of base) : 2247.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)
        -260 (-37.36 % of base) : 17481.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -148 (-36.63 % of base) : 3176.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) : 10331.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 8869.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: 535608 (overridden on cmd)
Total bytes of diff: 535320 (overridden on cmd)
Total bytes of delta: -288 (-0.05 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 4393.dasm (9.86 % of base)
          12 : 3932.dasm (7.89 % of base)
          12 : 4088.dasm (7.89 % of base)
          12 : 4120.dasm (8.33 % of base)
          12 : 4303.dasm (7.14 % of base)
          12 : 4373.dasm (6.82 % of base)
          12 : 4383.dasm (6.98 % of base)
           4 : 3842.dasm (3.70 % of base)
           4 : 3836.dasm (3.70 % of base)
           4 : 3848.dasm (3.70 % of base)
           4 : 3854.dasm (3.70 % of base)
           4 : 4170.dasm (3.70 % of base)
           4 : 4180.dasm (3.70 % of base)
           4 : 4222.dasm (3.70 % of base)
           4 : 4232.dasm (3.70 % of base)
           4 : 4242.dasm (3.85 % of base)
           4 : 4283.dasm (3.70 % of base)
           4 : 4323.dasm (3.70 % of base)
           4 : 4343.dasm (3.70 % of base)
           4 : 4363.dasm (3.70 % of base)

Top file improvements (bytes):
         -36 : 1449.dasm (-15.79 % of base)
         -36 : 281.dasm (-28.12 % of base)
         -36 : 2860.dasm (-18.00 % of base)
         -36 : 901.dasm (-15.79 % of base)
         -32 : 2937.dasm (-25.81 % of base)
         -32 : 2641.dasm (-17.39 % of base)
         -32 : 2229.dasm (-25.81 % of base)
         -32 : 2797.dasm (-21.62 % of base)
         -20 : 2382.dasm (-8.93 % of base)
          -4 : 3677.dasm (-3.70 % of base)
          -4 : 3861.dasm (-3.70 % of base)
          -4 : 3867.dasm (-3.70 % of base)
          -4 : 3872.dasm (-3.70 % of base)
          -4 : 3878.dasm (-3.70 % of base)
          -4 : 3884.dasm (-3.70 % of base)
          -4 : 3891.dasm (-3.70 % of base)
          -4 : 3902.dasm (-3.70 % of base)
          -4 : 3913.dasm (-3.57 % of base)
          -4 : 3965.dasm (-3.70 % of base)
          -4 : 3975.dasm (-3.70 % of base)

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

Top method regressions (bytes):
          28 (9.86 % of base) : 4393.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 4088.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 4120.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3932.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4303.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4373.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 4383.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3836.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 4170.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4180.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4222.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4232.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.85 % of base) : 4242.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3842.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4283.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4323.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3848.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4343.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4363.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3854.dasm - NullableTest5:BoxUnboxToQ(IEmpty):ubyte (Tier0)

Top method improvements (bytes):
         -36 (-28.12 % of base) : 281.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) : 1449.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) : 901.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)
         -36 (-18.00 % of base) : 2860.dasm - System.Threading.Tasks.Task:AddToList[System.__Canon](System.__Canon,byref,int) (Tier0)
         -32 (-21.62 % of base) : 2797.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -32 (-25.81 % of base) : 2229.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -32 (-25.81 % of base) : 2937.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
         -32 (-17.39 % of base) : 2641.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
         -20 (-8.93 % of base) : 2382.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 (Tier1)
          -4 (-3.70 % of base) : 3677.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3965.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3884.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-2.94 % of base) : 5069.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3891.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 4066.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3902.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 4097.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.57 % of base) : 3913.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 4138.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-2.94 % of base) : 4973.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)

Top method regressions (percentages):
          28 (9.86 % of base) : 4393.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 4120.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 4088.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3932.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4303.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 4383.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4373.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.85 % of base) : 4242.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3836.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 4170.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4180.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4222.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4232.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3842.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4283.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4323.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3848.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4343.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4363.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3854.dasm - NullableTest5:BoxUnboxToQ(IEmpty):ubyte (Tier0)

Top method improvements (percentages):
         -36 (-28.12 % of base) : 281.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -32 (-25.81 % of base) : 2229.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -32 (-25.81 % of base) : 2937.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Tier1)
         -32 (-21.62 % of base) : 2797.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -36 (-18.00 % of base) : 2860.dasm - System.Threading.Tasks.Task:AddToList[System.__Canon](System.__Canon,byref,int) (Tier0)
         -32 (-17.39 % of base) : 2641.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
         -36 (-15.79 % of base) : 1449.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) : 901.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)
         -20 (-8.93 % of base) : 2382.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 (Tier1)
          -4 (-3.70 % of base) : 3677.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3965.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3884.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3891.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 4066.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3902.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 4138.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3684.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3975.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3985.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3995.dasm - NullableTest4:BoxUnboxToQ(System.Object):ubyte (Tier0)


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: 1340444 (overridden on cmd)
Total bytes of diff: 1333768 (overridden on cmd)
Total bytes of delta: -6676 (-0.50 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          96 : 2824.dasm (23.53 % of base)
          84 : 2822.dasm (23.60 % of base)
          76 : 13457.dasm (19.39 % of base)
          64 : 13459.dasm (51.61 % of base)
          56 : 13467.dasm (33.33 % of base)
          56 : 2820.dasm (17.95 % of base)
          52 : 13465.dasm (22.41 % of base)
          44 : 2818.dasm (16.92 % of base)
          28 : 1153.dasm (18.42 % of base)
          28 : 1163.dasm (18.42 % of base)
          28 : 1001.dasm (22.58 % of base)
          28 : 1154.dasm (18.42 % of base)
          28 : 1162.dasm (18.42 % of base)
          28 : 17720.dasm (21.21 % of base)
          24 : 5432.dasm (23.08 % of base)
          24 : 5430.dasm (23.08 % of base)
          20 : 13290.dasm (17.86 % of base)
          20 : 13300.dasm (17.86 % of base)
          20 : 13308.dasm (17.86 % of base)
          20 : 16735.dasm (2.69 % of base)

Top file improvements (bytes):
        -184 : 805.dasm (-31.72 % of base)
        -180 : 13367.dasm (-20.93 % of base)
        -156 : 6139.dasm (-30.47 % of base)
        -136 : 864.dasm (-19.65 % of base)
        -128 : 866.dasm (-22.70 % of base)
        -124 : 2719.dasm (-21.23 % of base)
        -112 : 13359.dasm (-22.76 % of base)
        -104 : 1009.dasm (-25.74 % of base)
         -96 : 819.dasm (-19.35 % of base)
         -88 : 13448.dasm (-12.36 % of base)
         -88 : 13883.dasm (-20.37 % of base)
         -76 : 1020.dasm (-18.45 % of base)
         -76 : 826.dasm (-22.62 % of base)
         -76 : 1016.dasm (-18.45 % of base)
         -76 : 796.dasm (-12.03 % of base)
         -72 : 11865.dasm (-10.98 % of base)
         -72 : 1549.dasm (-30.51 % of base)
         -72 : 1551.dasm (-30.51 % of base)
         -72 : 5422.dasm (-26.09 % of base)
         -72 : 5424.dasm (-26.09 % of base)

74 total files with Code Size differences (53 improved, 21 regressed), 20 unchanged.

Top method regressions (bytes):
          96 (23.53 % of base) : 2824.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) : 2822.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)
          76 (19.39 % of base) : 13457.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Reverse[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
          64 (51.61 % of base) : 13459.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]) (FullOpts)
          56 (33.33 % of base) : 13467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.Comparison`1[System.__Canon]) (FullOpts)
          56 (17.95 % of base) : 2820.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)
          52 (22.41 % of base) : 13465.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          44 (16.92 % of base) : 2818.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 (21.21 % of base) : 17720.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1+ValueBuilder[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
          28 (22.58 % of base) : 1001.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) : 1153.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) : 1154.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) : 1162.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) : 1163.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) : 5430.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) : 5432.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          20 (17.86 % of base) : 13308.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon,System.Nullable`1[int]](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]):ubyte (FullOpts)
          20 (17.86 % of base) : 13300.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):ubyte (FullOpts)
          20 (17.86 % of base) : 13290.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]):ubyte (FullOpts)
          20 (2.69 % of base) : 16735.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference+<>c:<GetAnalyzerTypeNameMap>b__34_11(System.Linq.IGrouping`2[System.String,System.String]):System.Collections.Immutable.ImmutableHashSet`1[System.String]:this (FullOpts)

Top method improvements (bytes):
        -184 (-31.72 % of base) : 805.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
        -180 (-20.93 % of base) : 13367.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:CopyOverlapped[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,int) (FullOpts)
        -156 (-30.47 % of base) : 6139.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)
        -136 (-19.65 % of base) : 864.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) : 866.dasm - Roslyn.Utilities.EnumerableExtensions:AsSingleton[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
        -124 (-21.23 % of base) : 2719.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)
        -112 (-22.76 % of base) : 13359.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Clear[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
        -104 (-25.74 % of base) : 1009.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) : 819.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)
         -88 (-12.36 % of base) : 13448.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -88 (-20.37 % of base) : 13883.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.SegmentedList`1[System.__Canon]:this (FullOpts)
         -76 (-22.62 % of base) : 826.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) : 796.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) : 1016.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) : 1020.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -72 (-10.98 % of base) : 11865.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 (-26.09 % of base) : 5422.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) : 5424.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) : 812.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) : 1547.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):
          64 (51.61 % of base) : 13459.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon]) (FullOpts)
          56 (33.33 % of base) : 13467.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],System.Comparison`1[System.__Canon]) (FullOpts)
          84 (23.60 % of base) : 2822.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) : 2824.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) : 5430.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) : 5432.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) : 1001.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          52 (22.41 % of base) : 13465.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Sort[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          28 (21.21 % of base) : 17720.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1+ValueBuilder[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]:this (FullOpts)
          76 (19.39 % of base) : 13457.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:Reverse[System.__Canon](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[System.__Canon],int,int) (FullOpts)
          28 (18.42 % of base) : 1153.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) : 1154.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) : 1162.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) : 1163.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) : 2820.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)
          20 (17.86 % of base) : 13308.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon,System.Nullable`1[int]](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]):ubyte (FullOpts)
          20 (17.86 % of base) : 13300.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):ubyte (FullOpts)
          20 (17.86 % of base) : 13290.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedInitialize[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedList`1[System.__Canon]):ubyte (FullOpts)
          44 (16.92 % of base) : 2818.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) : 5420.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)

Top method improvements (percentages):
         -56 (-32.56 % of base) : 856.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) : 934.dasm - Roslyn.Utilities.ImmutableListExtensions:ToImmutableListOrEmpty[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableList`1[System.__Canon] (FullOpts)
         -56 (-32.56 % of base) : 936.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) : 805.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):int (FullOpts)
         -72 (-30.51 % of base) : 1547.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) : 1549.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) : 1551.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) : 6139.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) : 858.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) : 1545.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) : 1531.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerable[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -44 (-26.83 % of base) : 786.dasm - Roslyn.Utilities.EnumerableExtensions:AsArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -44 (-26.19 % of base) : 12646.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.Nullable`1[int]]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -44 (-26.19 % of base) : 758.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) : 5422.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) : 5424.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) : 812.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) : 1538.dasm - Roslyn.Utilities.SpecializedCollections:SingletonEnumerator[System.__Canon](System.__Canon):System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -104 (-25.74 % of base) : 1009.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) : 841.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: 1695136 (overridden on cmd)
Total bytes of diff: 1677276 (overridden on cmd)
Total bytes of delta: -17860 (-1.05 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          20 : 4838.dasm (6.25 % of base)
           8 : 5649.dasm (2.13 % of base)

Top file improvements (bytes):
        -428 : 34.dasm (-41.96 % of base)
        -428 : 42.dasm (-43.85 % of base)
        -372 : 149.dasm (-37.35 % of base)
        -372 : 1261.dasm (-36.47 % of base)
        -296 : 1966.dasm (-39.78 % of base)
        -260 : 2913.dasm (-43.92 % of base)
        -260 : 768.dasm (-40.37 % of base)
        -260 : 1291.dasm (-28.14 % of base)
        -260 : 156.dasm (-40.37 % of base)
        -260 : 4633.dasm (-40.88 % of base)
        -240 : 5779.dasm (-32.97 % of base)
        -212 : 3928.dasm (-33.12 % of base)
        -212 : 2064.dasm (-33.12 % of base)
        -204 : 10996.dasm (-30.00 % of base)
        -204 : 1556.dasm (-32.48 % of base)
        -204 : 4356.dasm (-34.46 % of base)
        -184 : 1308.dasm (-31.72 % of base)
        -184 : 2278.dasm (-15.44 % of base)
        -184 : 4828.dasm (-22.89 % of base)
        -148 : 5961.dasm (-41.11 % of base)

63 total files with Code Size differences (61 improved, 2 regressed), 13 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 4838.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           8 (2.13 % of base) : 5649.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

Top method improvements (bytes):
        -428 (-41.96 % of base) : 34.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) : 42.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-36.47 % of base) : 1261.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 149.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)
        -296 (-39.78 % of base) : 1966.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) : 4633.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 768.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) : 156.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) : 1291.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -260 (-43.92 % of base) : 2913.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -240 (-32.97 % of base) : 5779.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
        -212 (-33.12 % of base) : 3928.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 2064.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-30.00 % of base) : 10996.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
        -204 (-34.46 % of base) : 4356.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-32.48 % of base) : 1556.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -184 (-31.72 % of base) : 1308.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 (-22.89 % of base) : 4828.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)
        -184 (-15.44 % of base) : 2278.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -148 (-43.53 % of base) : 8065.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)

Top method regressions (percentages):
          20 (6.25 % of base) : 4838.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           8 (2.13 % of base) : 5649.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

Top method improvements (percentages):
        -260 (-43.92 % of base) : 2913.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -428 (-43.85 % of base) : 42.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -148 (-43.53 % of base) : 8065.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
        -428 (-41.96 % of base) : 34.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-41.57 % of base) : 6647.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-41.11 % of base) : 5961.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 14994.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]] (Instrumented Tier0)
         -92 (-41.07 % of base) : 4592.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]] (Tier0)
        -260 (-40.88 % of base) : 4633.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 768.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) : 156.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -148 (-40.22 % of base) : 8118.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-40.22 % of base) : 6403.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 (Tier0)
        -296 (-39.78 % of base) : 1966.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)
         -92 (-39.66 % of base) : 5410.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
         -92 (-39.66 % of base) : 13180.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
         -92 (-39.66 % of base) : 8239.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] (Tier0)
         -92 (-39.66 % of base) : 6544.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] (Tier0)
         -92 (-38.98 % of base) : 4874.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (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: 985512 (overridden on cmd)
Total bytes of diff: 978016 (overridden on cmd)
Total bytes of delta: -7496 (-0.76 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6374.dasm (8.99 % of base)
          64 : 4667.dasm (5.39 % of base)
          64 : 8778.dasm (11.76 % of base)
          48 : 6701.dasm (16.67 % of base)
          24 : 2788.dasm (6.59 % of base)
          24 : 5544.dasm (23.08 % of base)
          24 : 6218.dasm (31.58 % of base)
          24 : 8765.dasm (6.25 % of base)
          20 : 5595.dasm (16.13 % of base)
          20 : 69.dasm (6.25 % of base)
          12 : 2791.dasm (1.01 % of base)
           4 : 4134.dasm (3.45 % of base)
           4 : 5592.dasm (3.03 % of base)
           4 : 8210.dasm (1.89 % of base)

Top file improvements (bytes):
        -384 : 8711.dasm (-25.26 % of base)
        -328 : 2954.dasm (-23.98 % of base)
        -328 : 1003.dasm (-22.47 % of base)
        -228 : 2873.dasm (-7.52 % of base)
        -212 : 3313.dasm (-12.62 % of base)
        -212 : 13.dasm (-33.12 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -200 : 2961.dasm (-19.69 % of base)
        -188 : 11905.dasm (-21.96 % of base)
        -184 : 479.dasm (-24.34 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -176 : 3205.dasm (-27.85 % of base)
        -160 : 760.dasm (-17.62 % of base)
        -136 : 2165.dasm (-30.63 % of base)
        -136 : 6211.dasm (-18.68 % of base)
        -132 : 510.dasm (-19.76 % of base)
        -128 : 492.dasm (-18.71 % of base)
        -128 : 861.dasm (-27.12 % of base)
        -100 : 2100.dasm (-24.04 % of base)
        -100 : 632.dasm (-21.93 % of base)

61 total files with Code Size differences (47 improved, 14 regressed), 22 unchanged.

Top method regressions (bytes):
          68 (8.99 % of base) : 6374.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) : 8778.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) : 4667.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) : 6701.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
          24 (6.25 % of base) : 8765.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) : 5544.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) : 6218.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) : 2788.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) : 5595.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)
          12 (1.01 % of base) : 2791.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
           4 (1.89 % of base) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.03 % of base) : 5592.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) : 4134.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)

Top method improvements (bytes):
        -384 (-25.26 % of base) : 8711.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) : 1003.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) : 2954.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 (-7.52 % of base) : 2873.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (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) : 2961.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)
        -188 (-21.96 % of base) : 11905.dasm - System.Linq.Enumerable:TryGetLast[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],byref):System.ValueTuple`2[System.__Canon,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) : 3205.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 760.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)
        -136 (-18.68 % of base) : 6211.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) : 2165.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) : 861.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)
        -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)

Top method regressions (percentages):
          24 (31.58 % of base) : 6218.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) : 5544.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) : 6701.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) : 5595.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) : 8778.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          68 (8.99 % of base) : 6374.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) : 2788.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) : 8765.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) : 4667.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) : 4134.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.03 % of base) : 5592.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) : 8210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
          12 (1.01 % of base) : 2791.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2341.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) : 2165.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 6068.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
         -72 (-28.12 % of base) : 8314.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (FullOpts)
        -176 (-27.85 % of base) : 3205.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -128 (-27.12 % of base) : 861.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) : 2235.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) : 5565.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) : 3065.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) : 8711.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) : 3043.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) : 4718.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) : 2269.dasm - System.Collections.Immutable.ImmutableDictionary:CreateBuilder[System.__Canon,System.__Canon]():System.Collections.Immutable.ImmutableDictionary`2+Builder[System.__Canon,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: 1677192 (overridden on cmd)
Total bytes of diff: 1660080 (overridden on cmd)
Total bytes of delta: -17112 (-1.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 6787.dasm (12.55 % of base)
          48 : 6459.dasm (10.81 % of base)
          48 : 6462.dasm (10.62 % of base)
          48 : 6438.dasm (10.62 % of base)
          48 : 6449.dasm (10.62 % of base)
          20 : 9493.dasm (13.51 % of base)
          20 : 15692.dasm (6.10 % of base)
          16 : 6386.dasm (8.51 % of base)
           8 : 10825.dasm (3.03 % of base)
           8 : 11098.dasm (5.88 % of base)
           8 : 2653.dasm (4.26 % of base)
           4 : 2885.dasm (1.59 % of base)
           4 : 12492.dasm (5.56 % of base)
           4 : 5276.dasm (0.98 % of base)

Top file improvements (bytes):
        -328 : 10146.dasm (-29.29 % of base)
        -328 : 3828.dasm (-24.33 % of base)
        -228 : 9429.dasm (-28.22 % of base)
        -212 : 252.dasm (-30.99 % of base)
        -212 : 821.dasm (-33.12 % of base)
        -208 : 8100.dasm (-23.42 % of base)
        -208 : 6622.dasm (-23.01 % of base)
        -200 : 5703.dasm (-11.79 % of base)
        -188 : 13117.dasm (-23.86 % of base)
        -184 : 256.dasm (-24.34 % of base)
        -184 : 744.dasm (-26.14 % of base)
        -172 : 10145.dasm (-18.53 % of base)
        -172 : 8812.dasm (-22.63 % of base)
        -172 : 5805.dasm (-28.48 % of base)
        -164 : 5500.dasm (-22.04 % of base)
        -160 : 14259.dasm (-17.62 % of base)
        -152 : 10147.dasm (-14.02 % of base)
        -144 : 6582.dasm (-20.81 % of base)
        -144 : 7954.dasm (-24.32 % of base)
        -144 : 6782.dasm (-21.95 % of base)

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

Top method regressions (bytes):
         124 (12.55 % of base) : 6787.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) : 6459.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) : 6462.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) : 6449.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) : 6438.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) : 9493.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) : 15692.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) : 6386.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) : 10825.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) : 2653.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) : 11098.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) : 5276.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) : 2885.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) : 12492.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 10146.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) : 3828.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) : 9429.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) : 821.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 6622.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) : 8100.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) : 5703.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) : 13117.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) : 8812.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) : 10145.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) : 5805.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) : 5500.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) : 14259.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) : 10147.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 (-24.32 % of base) : 7954.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) : 6582.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 (-21.95 % of base) : 6782.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) : 9493.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) : 6787.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) : 6459.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) : 6462.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) : 6449.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) : 6438.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) : 6386.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) : 15692.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) : 11098.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) : 12492.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
           8 (4.26 % of base) : 2653.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) : 10825.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) : 2885.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) : 5276.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) : 9063.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) : 821.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 10829.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 11339.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) : 8039.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) : 5294.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) : 5543.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) : 6217.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) : 10351.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) : 10146.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) : 5805.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) : 9525.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) : 9429.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) : 5286.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) : 5801.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 9969.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) : 5166.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) : 10822.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) : 5541.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)



linux x64

Diffs are based on 92,598 contexts (38,516 MinOpts, 54,082 FullOpts).

MISSED contexts: base: 3,640 (2.59%), diff: 43,898 (31.25%)

Overall (-96,473 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 721,868 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 2,059,337 -15,319
benchmarks.run_tiered.linux.x64.checked.mch 2,163,412 -15,133
coreclr_tests.run.linux.x64.checked.mch 407,681 +64
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 1,447,569 -21,187
librariestestsnotieredcompilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,403,564 -13,465

MinOpts (-46,977 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 1,526,742 -13,499
benchmarks.run_tiered.linux.x64.checked.mch 1,965,819 -14,023
coreclr_tests.run.linux.x64.checked.mch 303,333 -6
libraries_tests.run.linux.x64.Release.mch 1,348,426 -19,449

FullOpts (-49,496 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 704,368 -4,586
benchmarks.run_pgo.linux.x64.checked.mch 532,595 -1,820
benchmarks.run_tiered.linux.x64.checked.mch 197,593 -1,110
coreclr_tests.run.linux.x64.checked.mch 104,348 +70
libraries.pmi.linux.x64.checked.mch 737,374 -20,077
libraries_tests.run.linux.x64.Release.mch 99,143 -1,738
librariestestsnotieredcompilation.run.linux.x64.Release.mch 830,863 -6,770
realworld.run.linux.x64.checked.mch 1,401,962 -13,465

Example diffs

benchmarks.run.linux.x64.checked.mch

-28 (-35.44%) : 5190.dasm - :InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span1System.__Canon

@@ -2,67 +2,50 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def -; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def +; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP
-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M5478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; byrRegs +[rbx] mov r15d, edx
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x18] - test rax, rax - je SHORT G_M5478_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M5478_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, rax - jmp SHORT G_M5478_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M5478_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M5478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, rbx ; byrRegs +[rsi] mov edx, r15d
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M5478_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M5478_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,12 +53,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-28 (-35.44%) : 6271.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]],byref):ubyte (FullOpts)

@@ -2,66 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> -; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r15 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]> +; V02 arg1 [V02,T02] ( 3, 3 ) byref -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M23653_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; byrRegs +[r15]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M23653_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M23653_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M23653_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rdi, rax - jmp SHORT G_M23653_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M23653_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M23653_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M23653_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; byrRegs +[rdx]
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M23653_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M23653_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=b0b1a39a) for method 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)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=b0b1a39a) for method 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)
; ============================================================ Unwind Info: @@ -69,12 +52,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-28 (-34.57%) : 6998.dasm - ProtoBuf.Serializer:SerializeSystem.__Canon (FullOpts)

@@ -2,68 +2,51 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.IO.Stream> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.IO.Stream> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64815_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; gcrRegs +[r15]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M64815_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M64815_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M64815_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rdi, rax - jmp SHORT G_M64815_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M64815_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M64815_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M64815_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx] xor rcx, rcx ; gcrRegs +[rcx]
- ;; size=8 bbWeight=1 PerfScore 0.75 -G_M64815_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=26 bbWeight=1 PerfScore 2.25 +G_M64815_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 81, prolog size 23, PerfScore 17.10, instruction count 25, allocated bytes for code 81 (MethodHash=131902d0) for method ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
+; Total bytes of code 53, prolog size 14, PerfScore 10.00, instruction count 16, allocated bytes for code 53 (MethodHash=131902d0) for method ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
; ============================================================ Unwind Info: @@ -71,12 +54,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+40 (+70.18%) : 5038.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable1[System.Collections.Generic.KeyValuePair2[System.Canon,System.Canon]]:CalculateCapacity(int,float):int (FullOpts)

@@ -9,10 +9,12 @@ ; ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ; V01 arg0 [V01,T02] ( 3, 3 ) int -> rsi single-def
-; V02 arg1 [V02,T03] ( 3, 3 ) float -> mm0 single-def
+; V02 arg1 [V02,T05] ( 3, 3 ) float -> mm0 single-def
; V03 loc0 [V03,T01] ( 3, 6 ) int -> rax single-def ; V04 loc1 [V04,T00] ( 6, 15 ) int -> rcx ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V06 tmp1 [V06,T03] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable" +; V07 tmp2 [V07,T04] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -25,13 +27,17 @@ G_M1485_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, vxorps xmm1, xmm1, xmm1 vcvtsi2ss xmm1, xmm1, esi vdivss xmm0, xmm1, xmm0
- vcvtss2sd xmm0, xmm0, xmm0 - call CORINFO_HELP_DBL2INT_OVF - ; gcr arg pop 0
+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32] + vcvttss2si eax, xmm0 + vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
mov ecx, 1 cmp eax, 1 jle SHORT G_M1485_IG04
- ;; size=31 bbWeight=1 PerfScore 22.83
+ ;; size=71 bbWeight=1 PerfScore 38.33
G_M1485_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add ecx, ecx cmp ecx, eax @@ -46,8 +52,12 @@ G_M1485_IG05: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 4F0000004F000000h, 4F0000004F000000h +RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 57, prolog size 7, PerfScore 33.33, instruction count 19, allocated bytes for code 57 (MethodHash=007ffa32) for method Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
+ +; Total bytes of code 97, prolog size 7, PerfScore 48.83, instruction count 24, allocated bytes for code 97 (MethodHash=007ffa32) for method Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
; ============================================================ Unwind Info:

+45 (+84.91%) : 835.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 ( 0) [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 = 0 @@ -35,16 +37,26 @@ G_M53658_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, 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=45 bbWeight=1 PerfScore 32.92
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1 + ;; size=90 bbWeight=1 PerfScore 47.42
G_M53658_IG03: ; bbWeight=1, epilog, nogc, extend pop rbx ret ;; size=2 bbWeight=1 PerfScore 1.50 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 53, prolog size 4, PerfScore 36.67, instruction count 15, allocated bytes for code 53 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
+; Total bytes of code 98, prolog size 4, PerfScore 51.17, instruction count 21, allocated bytes for code 98 (MethodHash=d8fa2e65) for method System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
; ============================================================ Unwind Info:

+46 (+158.62%) : 1510.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
; ============================================================ Unwind Info:

benchmarks.run_pgo.linux.x64.checked.mch

-33 (-34.74%) : 16442.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], rdi mov qword ptr [rbp-0x10], rdi ;; 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-0x18], 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 rdi, qword ptr [rbp-0x10] mov rsi, 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_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x18] xor rsi, rsi ; gcrRegs +[rsi] @@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rsi] +[rax] nop
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=38 bbWeight=1 PerfScore 8.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 95, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 95 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 62, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 62 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

-33 (-33.33%) : 2810.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic1ubyte

@@ -20,40 +20,25 @@ G_M15908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x10], rdi mov gword ptr [rbp-0x18], rsi ;; size=22 bbWeight=1 PerfScore 4.75
-G_M15908_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_M15908_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M15908_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-0x20], rax - jmp SHORT G_M15908_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M15908_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15908_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x20], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M15908_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x20] mov rsi, gword ptr [rbp-0x18] ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi] +[rax] nop
- ;; size=15 bbWeight=1 PerfScore 5.25 -G_M15908_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=38 bbWeight=1 PerfScore 8.50 +G_M15908_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 25.80, instruction count 26, allocated bytes for code 99 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)
+; Total bytes of code 66, prolog size 14, PerfScore 15.00, instruction count 17, allocated bytes for code 66 (MethodHash=a3d3c1db) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateIgnoreOnApplyCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Tier0)
; ============================================================ Unwind Info:

-33 (-33.33%) : 4075.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic1ubyte

@@ -20,40 +20,25 @@ G_M42409_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x10], rdi mov gword ptr [rbp-0x18], rsi ;; size=22 bbWeight=1 PerfScore 4.75
-G_M42409_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_M42409_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M42409_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-0x20], rax - jmp SHORT G_M42409_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M42409_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42409_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x20], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M42409_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x20] mov rsi, gword ptr [rbp-0x18] ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rsi] +[rax] nop
- ;; size=15 bbWeight=1 PerfScore 5.25 -G_M42409_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=38 bbWeight=1 PerfScore 8.50 +G_M42409_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 99, prolog size 14, PerfScore 25.80, instruction count 26, allocated bytes for code 99 (MethodHash=8f1b5a56) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Instrumented Tier0)
+; Total bytes of code 66, prolog size 14, PerfScore 15.00, instruction count 17, allocated bytes for code 66 (MethodHash=8f1b5a56) for method BenchmarkDotNet.Characteristics.CharacteristicObject`1[System.__Canon]:CreateCharacteristic[ubyte](System.String):BenchmarkDotNet.Characteristics.Characteristic`1[ubyte] (Instrumented Tier0)
; ============================================================ Unwind Info:

+13 (+11.11%) : 18396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,90 +9,83 @@ ; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.20) long -> rsi single-def -; V02 arg1 [V02,T01] ( 4, 3.17) byref -> rbx single-def
+; V00 this [V00,T02] ( 3, 2.17) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.34) long -> rbx single-def +; V02 arg1 [V02,T01] ( 4, 3.17) byref -> r15 single-def
; V03 loc0 [V03,T03] ( 7, 3.68) 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.37) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.37) ref -> r13 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 -> rdi "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 0.96) long -> rdi "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 push rbp push r15 push r14
+ push r13
push rbx
- push rax - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rsi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rdx - ; byrRegs +[rbx] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 16 + lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x28], rsi + mov r14, rdi + ; gcrRegs +[r14] + mov rbx, rsi + mov r15, rdx + ; byrRegs +[r15] + ;; size=30 bbWeight=1 PerfScore 7.50 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + mov rax, gword ptr [r15]
; 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.17, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.17, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- mov rdi, qword ptr [rsi+0x38] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.17 PerfScore 0.90 -G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.14 PerfScore 0.27 -G_M58319_IG05: ; bbWeight=0.03, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - mov rdi, rsi - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.03 PerfScore 0.06 -G_M58319_IG06: ; bbWeight=0.17, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - mov r14, rax - ; gcrRegs +[r14] - lea rdi, bword ptr [r14+0x10] - ; byrRegs +[rdi] - mov rsi, r15 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi r15] - ; byrRegs -[rdi]
mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, rax + call CORINFO_HELP_NEWFAST_MAYBEFROZEN + ; gcrRegs +[rax] + mov r13, rax + ; gcrRegs +[r13] + lea rdi, bword ptr [r13+0x10]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rsi r14] + ; byrRegs -[rdi] + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, r15 + ; byrRegs +[rdi] + mov rsi, r13 + ; gcrRegs +[rsi]
xor rdx, rdx ; gcrRegs +[rdx] call <unknown method> ; gcrRegs -[rdx rsi] +[rax]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi r15]
test rax, rax
- cmove rax, r14 - ;; size=40 bbWeight=0.17 PerfScore 0.90 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r14] - add rsp, 8
+ cmove rax, r13 + ;; size=79 bbWeight=0.17 PerfScore 1.45 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r13] + add rsp, 16
pop rbx
+ pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 117, prolog size 16, PerfScore 15.63, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 130, prolog size 21, PerfScore 15.95, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -100,13 +93,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+13 (+11.11%) : 19060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,90 +9,83 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 2.18) ref -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.21) long -> rsi single-def -; V02 arg1 [V02,T01] ( 4, 3.18) byref -> rbx single-def
+; V00 this [V00,T02] ( 3, 2.18) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 3.36) long -> rbx single-def +; V02 arg1 [V02,T01] ( 4, 3.18) byref -> r15 single-def
; V03 loc0 [V03,T03] ( 7, 3.71) 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 1.43) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.43) ref -> r13 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.71) long -> rdi "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1 ) long -> rdi "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 push rbp push r15 push r14
+ push r13
push rbx
- push rax - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rsi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rdx - ; byrRegs +[rbx] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 16 + lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x28], rsi + mov r14, rdi + ; gcrRegs +[r14] + mov rbx, rsi + mov r15, rdx + ; byrRegs +[r15] + ;; size=30 bbWeight=1 PerfScore 7.50 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + mov rax, gword ptr [r15]
; 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.18, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.18, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- mov rdi, qword ptr [rsi+0x38] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.18 PerfScore 0.94 -G_M58319_IG04: ; bbWeight=0.14, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.14 PerfScore 0.29 -G_M58319_IG05: ; bbWeight=0.04, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - mov rdi, rsi - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.04 PerfScore 0.06 -G_M58319_IG06: ; bbWeight=0.18, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - mov r14, rax - ; gcrRegs +[r14] - lea rdi, bword ptr [r14+0x10] - ; byrRegs +[rdi] - mov rsi, r15 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi r15] - ; byrRegs -[rdi]
mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, rax + call CORINFO_HELP_NEWFAST_MAYBEFROZEN + ; gcrRegs +[rax] + mov r13, rax + ; gcrRegs +[r13] + lea rdi, bword ptr [r13+0x10]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rsi r14] + ; byrRegs -[rdi] + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, r15 + ; byrRegs +[rdi] + mov rsi, r13 + ; gcrRegs +[rsi]
xor rdx, rdx ; gcrRegs +[rdx] call <unknown method> ; gcrRegs -[rdx rsi] +[rax]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi r15]
test rax, rax
- cmove rax, r14 - ;; size=40 bbWeight=0.18 PerfScore 0.94 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r14] - add rsp, 8
+ cmove rax, r13 + ;; size=79 bbWeight=0.18 PerfScore 1.52 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r13] + add rsp, 16
pop rbx
+ pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 117, prolog size 16, PerfScore 15.72, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 130, prolog size 21, PerfScore 16.02, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -100,13 +93,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+46 (+158.62%) : 6839.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.linux.x64.checked.mch

-28 (-35.44%) : 7487.dasm - :InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span1System.__Canon

@@ -2,67 +2,50 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def -; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def +; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP
-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M18096_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; byrRegs +[rbx] mov r15d, edx
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M18096_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x18] - test rax, rax - je SHORT G_M18096_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M18096_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, rax - jmp SHORT G_M18096_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M18096_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M18096_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M18096_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, rbx ; byrRegs +[rsi] mov edx, r15d
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M18096_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M18096_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=2b69b94f) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (Tier1)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=2b69b94f) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (Tier1)
; ============================================================ Unwind Info: @@ -70,12 +53,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-33 (-34.74%) : 14537.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], rdi mov qword ptr [rbp-0x10], rdi ;; 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-0x18], 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 rdi, qword ptr [rbp-0x10] mov rsi, 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_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x18] xor rsi, rsi ; gcrRegs +[rsi] @@ -45,14 +30,14 @@ G_M34046_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rsi] +[rax] nop
- ;; size=15 bbWeight=1 PerfScore 4.75 -G_M34046_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=38 bbWeight=1 PerfScore 8.00 +G_M34046_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 95, prolog size 14, PerfScore 24.30, instruction count 26, allocated bytes for code 95 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
+; Total bytes of code 62, prolog size 14, PerfScore 13.50, instruction count 17, allocated bytes for code 62 (MethodHash=bcfc7b01) for method Microsoft.Extensions.DependencyInjection.ServiceDescriptor:Singleton[System.__Canon,System.__Canon]():Microsoft.Extensions.DependencyInjection.ServiceDescriptor (Tier0)
; ============================================================ Unwind Info:

-28 (-34.57%) : 5557.dasm - System.Linq.Enumerable:IntersectSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -2,68 +2,51 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M59306_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; gcrRegs +[r15]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M59306_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M59306_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M59306_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rdi, rax - jmp SHORT G_M59306_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M59306_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M59306_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M59306_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx] xor rcx, rcx ; gcrRegs +[rcx]
- ;; size=8 bbWeight=1 PerfScore 0.75 -G_M59306_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=26 bbWeight=1 PerfScore 2.25 +G_M59306_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 81, prolog size 23, PerfScore 17.10, instruction count 25, allocated bytes for code 81 (MethodHash=1f031855) for method System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
+; Total bytes of code 53, prolog size 14, PerfScore 10.00, instruction count 16, allocated bytes for code 53 (MethodHash=1f031855) for method System.Linq.Enumerable:Intersect[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
; ============================================================ Unwind Info: @@ -71,12 +54,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+0 (0.00%) : 20984.dasm - GuardedDevirtualization.TwoClassVirtual+d__3:MoveNext():ubyte:this (Tier1)

@@ -51,7 +51,7 @@ G_M12439_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=13 bbWeight=0.50 PerfScore 1.12 G_M12439_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; GuardedDevirtualization.TwoClassVirtual+TestInput
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[rax] mov r15, rax ; gcrRegs +[r15]

+13 (+11.11%) : 1617.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -8,90 +8,83 @@ ; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T00] ( 5, 3.60) long -> rsi single-def -; V02 arg1 [V02,T01] ( 4, 3.50) byref -> rbx single-def
+; V00 this [V00,T03] ( 3, 2.50) ref -> r14 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 -> r15 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 4 ) ref -> r13 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 -> rdi "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 2.80) long -> rdi "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 push rbp push r15 push r14
+ push r13
push rbx
- push rax - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rsi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rdx - ; byrRegs +[rbx] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 16 + lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x28], rsi + mov r14, rdi + ; gcrRegs +[r14] + mov rbx, rsi + mov r15, rdx + ; byrRegs +[r15] + ;; size=30 bbWeight=1 PerfScore 7.50 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + mov rax, gword ptr [r15]
; 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=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- mov rdi, qword ptr [rsi+0x38] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je SHORT G_M58319_IG05 - ;; size=13 bbWeight=0.50 PerfScore 2.62 -G_M58319_IG04: ; bbWeight=0.40, gcrefRegs=8000 {r15}, 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=8000 {r15}, byrefRegs=0008 {rbx}, byref - mov rdi, rsi - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.10 PerfScore 0.18 -G_M58319_IG06: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - mov r14, rax - ; gcrRegs +[r14] - lea rdi, bword ptr [r14+0x10] - ; byrRegs +[rdi] - mov rsi, r15 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi r15] - ; byrRegs -[rdi]
mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, rax + call CORINFO_HELP_NEWFAST_MAYBEFROZEN + ; gcrRegs +[rax] + mov r13, rax + ; gcrRegs +[r13] + lea rdi, bword ptr [r13+0x10]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rsi r14] + ; byrRegs -[rdi] + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, r15 + ; byrRegs +[rdi] + mov rsi, r13 + ; gcrRegs +[rsi]
xor rdx, rdx ; gcrRegs +[rdx] call <unknown method> ; gcrRegs -[rdx rsi] +[rax]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi r15]
test rax, rax
- cmove rax, r14 - ;; size=40 bbWeight=0.50 PerfScore 2.62 -G_M58319_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r14] - add rsp, 8
+ cmove rax, r13 + ;; size=79 bbWeight=0.50 PerfScore 4.25 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r13] + add rsp, 16
pop rbx
+ pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 117, prolog size 16, PerfScore 19.73, instruction count 38, allocated bytes for code 117 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 130, prolog size 21, PerfScore 18.75, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -99,13 +92,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+46 (+158.62%) : 16176.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

coreclr_tests.run.linux.x64.checked.mch

-28 (-30.11%) : 2369.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefaultSystem.__Canon,int:byref (Instrumented Tier1)

@@ -2,78 +2,56 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Instrumented Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T04] ( 3, 3 ) byref -> r14 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) byref -> r14 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T07] ( 2, 4 ) long -> rdi "argument with side effect" -; V07 rat0 [V07,T06] ( 3, 4 ) long -> rdi "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> rsi "spilling expr" -; V09 rat2 [V09,T05] ( 3, 4.48) long -> rax "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push r14 push rbx
- push rax - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rdi
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; gcrRegs +[r15] mov r14, rcx ; byrRegs +[r14]
- ;; size=25 bbWeight=1 PerfScore 7.25 -G_M252_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz - mov rsi, qword ptr [rdi+0x38] - cmp qword ptr [rsi+0x10], 32 - jle SHORT G_M252_IG05 - ;; size=11 bbWeight=1 PerfScore 6.00 -G_M252_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz - mov rax, qword ptr [rsi+0x20] - test rax, rax - je SHORT G_M252_IG05 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M252_IG04: ; bbWeight=0.64, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref, isz - mov rdi, rax - jmp SHORT G_M252_IG06 - ;; size=5 bbWeight=0.64 PerfScore 1.44 -G_M252_IG05: ; bbWeight=0.36, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref
+ ;; size=23 bbWeight=1 PerfScore 5.00 +G_M252_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.36 PerfScore 0.54 -G_M252_IG06: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx] mov rcx, r14 ; byrRegs +[rcx]
- ;; size=9 bbWeight=1 PerfScore 0.75 -G_M252_IG07: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=27 bbWeight=1 PerfScore 2.25 +G_M252_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx pop r14 pop r15
- pop rbp
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=16 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 3.75
-; Total bytes of code 93, prolog size 25, PerfScore 22.83, instruction count 30, allocated bytes for code 93 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
+; Total bytes of code 65, prolog size 23, PerfScore 11.00, instruction count 19, allocated bytes for code 65 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -81,13 +59,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x09 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-33 (-29.73%) : 437.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov gword ptr [rbp-0x18], rsi mov gword ptr [rbp-0x20], rdx ;; size=26 bbWeight=1 PerfScore 5.75
-G_M305_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_M305_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M305_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-0x30], rax - jmp SHORT G_M305_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M305_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
mov qword ptr [rbp-0x30], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x28] mov rdi, qword ptr [rbp-0x30] mov rsi, gword ptr [rbp-0x18] @@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx rsi] +[rax] nop
- ;; size=23 bbWeight=1 PerfScore 6.75 -G_M305_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=46 bbWeight=1 PerfScore 10.00 +G_M305_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:

-33 (-17.55%) : 1056.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)

@@ -33,7 +33,7 @@ G_M60442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov bword ptr [rbp-0x30], r8 mov gword ptr [rbp-0x38], r9 ;; size=43 bbWeight=1 PerfScore 10.00
-G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x20] ; gcrRegs +[rdi] call [<unknown method>] @@ -41,26 +41,11 @@ G_M60442_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[rax] mov bword ptr [rbp-0x48], rax mov qword ptr [rbp-0x40], rdx
- mov rax, qword ptr [rbp-0x18] - ; byrRegs -[rax] - mov rax, qword ptr [rax+0x38] - cmp qword ptr [rax+0x10], 0 - je SHORT G_M60442_IG04 - ;; size=33 bbWeight=1 PerfScore 13.00 -G_M60442_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-0x50], rax - jmp SHORT G_M60442_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M60442_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x18] mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY + ; byrRegs -[rax]
mov qword ptr [rbp-0x50], rax
- ;; size=23 bbWeight=0.20 PerfScore 0.65 -G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, bword ptr [rbp-0x30] ; byrRegs +[rax] mov bword ptr [rsp], rax @@ -87,14 +72,14 @@ G_M60442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rdi] ; byrRegs -[rcx] nop
- ;; size=65 bbWeight=1 PerfScore 17.50 -G_M60442_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=106 bbWeight=1 PerfScore 26.75 +G_M60442_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 112 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 188, prolog size 20, PerfScore 49.30, instruction count 49, allocated bytes for code 188 (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 155, prolog size 20, PerfScore 38.50, instruction count 40, allocated bytes for code 155 (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:

+13 (+10.74%) : 4028.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] class-hnd <System.Object> ; V01 OutArgs [V01 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02 ] ( 1, 1 ) struct (16) [rbp-0x18] do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [rbp-0x30] do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Decimal]>
+; V03 tmp2 [V03 ] ( 1, 1 ) struct (24) [rbp-0x30] do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Decimal]>
; ; Lcl frame size = 80 @@ -20,13 +20,18 @@ G_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov gword ptr [rbp-0x08], rdi ;; size=17 bbWeight=1 PerfScore 3.75 G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rdi, [rbp-0x30] - mov rdx, gword ptr [rbp-0x08] - ; gcrRegs +[rdx] - mov rsi, 0xD1FFAB1E ; System.Nullable`1[System.Decimal] - call CORINFO_HELP_UNBOX_NULLABLE - ; gcrRegs -[rdx]
+ mov rsi, gword ptr [rbp-0x08] + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; System.Nullable`1[System.Decimal] + call CORINFO_HELP_UNBOX + ; gcrRegs -[rsi] + ; byrRegs +[rax] + vmovdqu xmm0, xmmword ptr [rax] + vmovdqu xmmword ptr [rbp-0x30], xmm0 + mov rcx, qword ptr [rax+0x10] + mov qword ptr [rbp-0x20], rcx
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ ; byrRegs -[rax]
mov rdi, qword ptr [rax] mov rax, 0xD1FFAB1E ; static handle mov rsi, qword ptr [rax+0x08] @@ -41,14 +46,14 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rsi, qword ptr [rbp-0x10] call [<unknown method>] nop
- ;; size=98 bbWeight=1 PerfScore 23.50
+ ;; size=111 bbWeight=1 PerfScore 31.00
G_M43438_IG03: ; bbWeight=1, epilog, nogc, extend add rsp, 80 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 121, prolog size 13, PerfScore 29.00, instruction count 27, allocated bytes for code 121 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 134, prolog size 13, PerfScore 36.50, instruction count 30, allocated bytes for code 134 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
; ============================================================ Unwind Info:

+46 (+158.62%) : 2770.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
; ============================================================ Unwind Info:

+46 (+158.62%) : 1823.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
; ============================================================ Unwind Info:

libraries.pmi.linux.x64.checked.mch

-28 (-45.90%) : 10065.dasm - Microsoft.FSharp.Collections.ListModule:EmptySystem.__Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M17915_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M17915_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - je SHORT G_M17915_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M17915_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M17915_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M17915_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M17915_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M17915_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M17915_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M17915_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
tail.jmp [Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]] ; gcr arg pop 0
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=ff13ba04) for method Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=ff13ba04) for method Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-45.90%) : 15538.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOneSystem.__Canon:System.__Canon (FullOpts)

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M25175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - 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
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M25175_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M25175_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M25175_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M25175_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
tail.jmp [Microsoft.FSharp.Core.LanguagePrimitives:GenericOneDynamic[System.__Canon]():System.__Canon] ; gcr arg pop 0
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=d02e9da8) for method Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-45.90%) : 10463.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - 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
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
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=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

+45 (+51.72%) : 11024.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 -> rdi single-def "V01.[000..008)"
-;* V09 cse0 [V09,T07] ( 0, 0 ) long -> zero-ref "CSE - aggressive" -; V10 cse1 [V10,T06] ( 4, 3 ) int -> rsi "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,T00] ( 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 -> rsi "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,T00] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 24 @@ -51,13 +53,19 @@ G_M41213_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, 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, esi jle SHORT G_M41213_IG04 call [System.Collections.Generic.List`1[System.__Canon]:set_Capacity(int):this] ; gcrRegs -[rdi]
- ;; 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] @@ -69,9 +77,13 @@ G_M41213_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=7 bbWeight=1 PerfScore 2.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 87, prolog size 18, PerfScore 30.04, instruction count 27, allocated bytes for code 87 (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 132, prolog size 18, PerfScore 37.29, instruction count 33, allocated bytes for code 132 (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 (+59.21%) : 11006.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 -> rdi single-def "V01.[000..008)"
-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rsi "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 -> rsi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -40,13 +42,19 @@ G_M53962_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, 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, esi jle SHORT G_M53962_IG04 call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this] ; gcrRegs -[rdi]
- ;; 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] @@ -57,9 +65,13 @@ G_M53962_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 76, prolog size 13, PerfScore 24.29, instruction count 22, allocated bytes for code 76 (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 121, prolog size 13, PerfScore 31.54, instruction count 28, allocated bytes for code 121 (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:

+45 (+59.21%) : 11027.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 -> rdi single-def "V01.[000..008)"
-; V07 cse0 [V07,T02] ( 4, 3 ) int -> rsi "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 -> rsi "CSE - aggressive"
; ; Lcl frame size = 16 @@ -40,13 +42,19 @@ G_M21751_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, 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, esi jle SHORT G_M21751_IG04 call [System.Collections.Generic.List`1[ubyte]:set_Capacity(int):this] ; gcrRegs -[rdi]
- ;; 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] @@ -57,9 +65,13 @@ G_M21751_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 76, prolog size 13, PerfScore 24.29, instruction count 22, allocated bytes for code 76 (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 121, prolog size 13, PerfScore 31.54, instruction count 28, allocated bytes for code 121 (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:

libraries_tests.run.linux.x64.Release.mch

-28 (-45.90%) : 12382.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Tier1 code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - 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
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]] ; gcr arg pop 0
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-33 (-36.26%) : 190.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], rdi mov qword ptr [rbp-0x10], rdi ;; 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-0x18], 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 rdi, qword ptr [rbp-0x10] mov rsi, 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_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x18] 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, 32 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%) : 3423.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], rdi mov qword ptr [rbp-0x10], rdi ;; 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-0x18], 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 rdi, qword ptr [rbp-0x10] mov rsi, 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_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x18] 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, 32 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] (Instrumented 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] (Instrumented Tier0)
; ============================================================ Unwind Info:

+6 (+4.84%) : 4668.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

@@ -9,95 +9,83 @@ ; 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 -> r15 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T02] ( 5, 4.36) long -> rsi single-def -; V02 arg1 [V02,T03] ( 4, 4 ) byref -> rbx single-def
+; V00 this [V00,T04] ( 3, 3 ) ref -> r14 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T02] ( 5, 5.00) long -> rbx single-def +; V02 arg1 [V02,T03] ( 4, 4 ) byref -> r15 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 ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T00] ( 4, 8.00) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T00] ( 4, 8.00) ref -> r13 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,T07] ( 3, 4.00) long -> rdi "runtime lookup" -; V10 rat1 [V10,T04] ( 3, 5.60) long -> rdi "spilling expr" -; V11 rat2 [V11,T06] ( 3, 4.48) long -> rdi "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 push rbp push r15 push r14
+ push r13
push rbx
- push rax - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rsi - mov r15, rdi - ; gcrRegs +[r15] - mov rbx, rdx - ; byrRegs +[rbx] - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M58319_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - mov rax, gword ptr [rbx]
+ sub rsp, 16 + lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x28], rsi + mov r14, rdi + ; gcrRegs +[r14] + mov rbx, rsi + mov r15, rdx + ; byrRegs +[r15] + ;; size=30 bbWeight=1 PerfScore 7.50 +G_M58319_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref, isz + mov rax, gword ptr [r15]
; gcrRegs +[rax] test rax, rax
- jne SHORT G_M58319_IG08
+ jne SHORT G_M58319_IG04
;; size=8 bbWeight=1 PerfScore 3.25
-G_M58319_IG03: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M58319_IG03: ; bbWeight=1.00, gcrefRegs=4000 {r14}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
- mov rdi, qword ptr [rsi+0x38] - cmp qword ptr [rdi+0x08], 24 - jle SHORT G_M58319_IG06 - ;; size=11 bbWeight=1.00 PerfScore 6.00 -G_M58319_IG04: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, qword ptr [rdi+0x18] - test rdi, rdi - je SHORT G_M58319_IG06 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M58319_IG05: ; bbWeight=0.64, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG07 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M58319_IG06: ; bbWeight=0.36, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - mov rdi, rsi - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M58319_IG07: ; bbWeight=1.00, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - mov r14, rax - ; gcrRegs +[r14] - lea rdi, bword ptr [r14+0x10] - ; byrRegs +[rdi] - mov rsi, r15 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi r15] - ; byrRegs -[rdi]
mov rdi, rbx
+ mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, rax + call CORINFO_HELP_NEWFAST_MAYBEFROZEN + ; gcrRegs +[rax] + mov r13, rax + ; gcrRegs +[r13] + lea rdi, bword ptr [r13+0x10]
; byrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rsi r14] + ; byrRegs -[rdi] + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, r15 + ; byrRegs +[rdi] + mov rsi, r13 + ; gcrRegs +[rsi]
xor rdx, rdx ; gcrRegs +[rdx] call <unknown method> ; gcrRegs -[rdx rsi] +[rax]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi r15]
test rax, rax
- cmove rax, r14 - ;; size=40 bbWeight=1.00 PerfScore 5.25 -G_M58319_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r14] - add rsp, 8
+ cmove rax, r13 + ;; size=79 bbWeight=1.00 PerfScore 8.50 +G_M58319_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r13] + add rsp, 16
pop rbx
+ pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 3.75
-; Total bytes of code 124, prolog size 16, PerfScore 29.26, instruction count 40, allocated bytes for code 124 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 130, prolog size 21, PerfScore 23.00, instruction count 39, allocated bytes for code 130 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -105,13 +93,14 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C + CountOfUnwindCodes: 6
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+18 (+6.00%) : 4533.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

@@ -13,19 +13,20 @@ ; V01 arg1 [V01,T00] ( 13, 5.37) ref -> rbx class-hnd single-def <System.Object> ; V02 arg2 [V02,T01] ( 7, 4.25) ref -> r15 class-hnd single-def <System.Object> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T06] ( 3, 0.50) int -> rax "guarded devirt return temp"
+; V04 tmp1 [V04,T07] ( 3, 0.50) int -> rax "guarded devirt return temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.String> ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String> -; V09 tmp6 [V09,T05] ( 5, 0.93) ref -> r15 class-hnd exact "Inline stloc first use temp" <System.String> -; V10 tmp7 [V10,T03] ( 2, 1 ) byref -> rdi single-def "impAppendStmt" -; V11 tmp8 [V11,T04] ( 2, 1 ) int -> rax "Single return block return value" -; V12 cse0 [V12,T07] ( 3, 0.49) int -> r14 "CSE - conservative"
+; V08 tmp5 [V08,T06] ( 4, 0.87) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.String> +; V09 tmp6 [V09,T04] ( 2, 1 ) byref -> rdi single-def "impAppendStmt" +; V10 tmp7 [V10,T05] ( 2, 1 ) int -> rax "Single return block return value" +; V11 cse0 [V11,T09] ( 3, 0.49) int -> r14 "CSE - conservative" +; V12 rat0 [V12,T03] ( 5, 1.88) ref -> r15 "replacement local" +; V13 rat1 [V13,T08] ( 2, 0.50) long -> rdi "CSE for expectedClsNode"
; ; Lcl frame size = 8
-G_M51920_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51920_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp push r15 push r14 @@ -52,7 +53,7 @@ G_M51920_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ;; size=31 bbWeight=1 PerfScore 4.75 G_M51920_IG03: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz cmp gword ptr [r14+0x08], rbx
- je G_M51920_IG15
+ je G_M51920_IG16
cmp rbx, r15 jne SHORT G_M51920_IG06 ;; size=15 bbWeight=1 PerfScore 5.25 @@ -71,33 +72,27 @@ G_M51920_IG05: ; bbWeight=0.75, epilog, nogc, extend G_M51920_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rbx r14-r15] cmp gword ptr [r14+0x20], 0
- jne G_M51920_IG17
+ jne G_M51920_IG18
test rbx, rbx
- je G_M51920_IG15
+ je G_M51920_IG16
mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rbx], rdi
- jne SHORT G_M51920_IG13
+ jne SHORT G_M51920_IG14
test r15, r15
- jne SHORT G_M51920_IG08
+ jne SHORT G_M51920_IG12
;; size=40 bbWeight=0.25 PerfScore 2.69
-G_M51920_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx r14-r15] - xor eax, eax - jmp SHORT G_M51920_IG11 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M51920_IG08: ; bbWeight=0.06, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15] - mov rdi, 0xD1FFAB1E ; System.String - cmp qword ptr [r15], rdi - jne SHORT G_M51920_IG07 - ;; size=15 bbWeight=0.06 PerfScore 0.25 -G_M51920_IG09: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M51920_IG07: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14] + test r15, r15 + je G_M51920_IG20 + ;; size=9 bbWeight=0.25 PerfScore 0.31 +G_M51920_IG08: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x08] mov r14d, dword ptr [r15+0x08] cmp edi, r14d
- jne SHORT G_M51920_IG07 - ;; size=12 bbWeight=0.12 PerfScore 0.63 -G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne G_M51920_IG20 + ;; size=16 bbWeight=0.12 PerfScore 0.63 +G_M51920_IG09: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov edi, 1 call [System.Diagnostics.Debug:Assert(ubyte)] ; gcr arg pop 0 @@ -120,10 +115,10 @@ G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; byrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=57 bbWeight=0.25 PerfScore 5.00
-G_M51920_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51920_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, al ;; size=3 bbWeight=0.25 PerfScore 0.06
-G_M51920_IG12: ; bbWeight=0.25, epilog, nogc, extend
+G_M51920_IG11: ; bbWeight=0.25, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -131,8 +126,19 @@ G_M51920_IG12: ; bbWeight=0.25, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.25 PerfScore 0.81
-G_M51920_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+G_M51920_IG12: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r15]
+ mov rdi, 0xD1FFAB1E ; System.String + cmp qword ptr [r15], rdi + je SHORT G_M51920_IG07 + ;; size=15 bbWeight=0.12 PerfScore 0.53 +G_M51920_IG13: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + xor r15, r15 + ; gcrRegs +[r15] + jmp SHORT G_M51920_IG07 + ;; size=5 bbWeight=0.06 PerfScore 0.14 +G_M51920_IG14: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov rsi, r15 @@ -140,7 +146,7 @@ G_M51920_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { mov rax, qword ptr [rbx] mov rax, qword ptr [rax+0x48] ;; size=13 bbWeight=0 PerfScore 0.00
-G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M51920_IG15: ; bbWeight=0, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -148,11 +154,11 @@ G_M51920_IG14: ; bbWeight=0, epilog, nogc, extend pop rbp tail.jmp [rax+0x10]<unknown method> ;; size=14 bbWeight=0 PerfScore 0.00
-G_M51920_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M51920_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15] xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00
-G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M51920_IG17: ; bbWeight=0, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -160,7 +166,7 @@ G_M51920_IG16: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0 PerfScore 0.00
-G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M51920_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15] mov rdi, gword ptr [r14+0x20] ; gcrRegs +[rdi] @@ -171,7 +177,7 @@ G_M51920_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=C008 { mov r11, 0xD1FFAB1E ; code for <unknown method> cmp dword ptr [rdi], edi ;; size=22 bbWeight=0 PerfScore 0.00
-G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M51920_IG19: ; bbWeight=0, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -179,8 +185,13 @@ G_M51920_IG18: ; bbWeight=0, epilog, nogc, extend pop rbp tail.jmp [r11]<unknown method> ;; size=13 bbWeight=0 PerfScore 0.00
+G_M51920_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rdx rbx rsi rdi r14-r15] + xor eax, eax + jmp SHORT G_M51920_IG10 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 21, PerfScore 28.32, instruction count 91, allocated bytes for code 300 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
+; Total bytes of code 318, prolog size 21, PerfScore 29.05, instruction count 95, allocated bytes for code 318 (MethodHash=350c352f) for method System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
; ============================================================ Unwind Info:

+17 (+6.23%) : 3726.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 -> rbx single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> rbx single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [rbp-0x60] 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) [rbp-0x168] 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 -> rbx class-hnd single-def <System.__Canon[]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> r15 class-hnd single-def <System.__Canon[]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+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 -> r14 "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 -> rax "field V08._reference (fldOffset=0x0)" P-INDEP -; V14 tmp9 [V14,T13] ( 3, 3 ) int -> rdx "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T06] ( 3, 3 ) byref -> rax "field V08._reference (fldOffset=0x0)" P-INDEP +; V14 tmp9 [V14,T07] ( 3, 3 ) int -> rdx "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 -> rdi "argument with side effect" -; V18 tmp13 [V18,T09] ( 2, 4 ) long -> rsi "argument with side effect" -; V19 tmp14 [V19,T10] ( 2, 4 ) long -> rsi "argument with side effect" -; V20 tmp15 [V20,T11] ( 2, 4 ) long -> rsi "argument with side effect" -; V21 cse0 [V21,T05] ( 4, 4 ) long -> r14 "CSE - moderate" -; V22 rat0 [V22,T06] ( 3, 4 ) long -> rdi "runtime lookup" -; V23 rat1 [V23,T01] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T07] ( 3, 4 ) long -> r14 "runtime lookup" -; V25 rat3 [V25,T02] ( 3, 5.60) long -> rdi "spilling expr" -; V26 rat4 [V26,T04] ( 3, 4.48) long -> r14 "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T03] ( 2, 4 ) long -> rsi "argument with side effect" +; V18 tmp13 [V18,T04] ( 2, 4 ) long -> rsi "argument with side effect" +; V19 tmp14 [V19,T05] ( 2, 4 ) long -> rsi "argument with side effect"
; ; Lcl frame size = 344 @@ -61,23 +54,16 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, rsi ; gcrRegs +[r15] ;; size=94 bbWeight=1 PerfScore 19.33
-G_M19942_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rbx+0x38] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je SHORT G_M19942_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19942_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M19942_IG02: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M19942_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ call CORINFO_HELP_MEMCPY + mov r14, rax + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY
lea rsi, [rbp-0x60]
+ mov rdi, r14
mov edx, 8 call [<PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon]] ; byrRegs +[rax] @@ -85,46 +71,36 @@ G_M19942_IG05: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byr mov dword ptr [rbp-0x78], edx mov bword ptr [rbp-0x70], rax mov dword ptr [rbp-0x68], edx
- mov rdi, qword ptr [rbx+0x38] - cmp qword ptr [rdi+0x08], 24 - jle SHORT G_M19942_IG08 - ;; size=40 bbWeight=1 PerfScore 13.75 -G_M19942_IG06: ; bbWeight=0.80, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rax] - mov r14, qword ptr [rdi+0x18] - test r14, r14 - je SHORT G_M19942_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M19942_IG07: ; bbWeight=0.64, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19942_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M19942_IG08: ; bbWeight=0.36, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov rdi, rbx mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov r14, rax - ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M19942_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - mov rsi, r14
+ call CORINFO_HELP_MEMCPY + ; byrRegs -[rax] + mov rsi, rax
lea rdi, [rbp-0x168] mov rdx, r15 ; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rdx r15]
- mov rsi, r14
+ mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rsi, rax
lea rdi, [rbp-0x168] call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcrRegs +[rax]
- mov rbx, rax - ; gcrRegs +[rbx] - mov rsi, r14
+ mov r15, rax + ; gcrRegs +[r15] + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcrRegs -[rax] + mov rsi, rax
lea rdi, [rbp-0x168] call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this]
- ; gcrRegs -[rax] - mov rax, rbx
+ mov rax, r15
; gcrRegs +[rax]
- ;; size=57 bbWeight=1 PerfScore 12.00 -G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=182 bbWeight=1 PerfScore 27.75 +G_M19942_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 344 pop rbx pop r14 @@ -133,7 +109,7 @@ G_M19942_IG10: ; bbWeight=1, epilog, nogc, extend ret ;; size=14 bbWeight=1 PerfScore 3.25
-; Total bytes of code 273, prolog size 88, PerfScore 60.04, instruction count 65, allocated bytes for code 273 (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 290, prolog size 88, PerfScore 50.33, instruction count 62, allocated bytes for code 290 (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:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-28 (-45.90%) : 2137.dasm - System.Linq.Enumerable:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M41558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - 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
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M41558_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M41558_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M41558_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M41558_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
tail.jmp [System.Array:Empty[System.__Canon]():System.__Canon[]] ; gcr arg pop 0
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=4b205da9) for method System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-35.44%) : 69.dasm - :InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span1System.__Canon

@@ -2,67 +2,50 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) byref -> rbx single-def -; V02 arg1 [V02,T03] ( 3, 3 ) int -> r15 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) byref -> rbx single-def +; V02 arg1 [V02,T02] ( 3, 3 ) int -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]> ;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-DEP ;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-DEP
-; V08 tmp5 [V08,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V09 rat0 [V09,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V08 tmp5 [V08,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M5478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; byrRegs +[rbx] mov r15d, edx
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x18] - test rax, rax - je SHORT G_M5478_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M5478_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, rax - jmp SHORT G_M5478_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M5478_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M5478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M5478_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rsi, rbx ; byrRegs +[rsi] mov edx, r15d
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M5478_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M5478_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Runtime.InteropServices.MemoryMarshal:CreateSpan[System.__Canon](byref,int):System.Span`1[System.__Canon]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=97bfea99) for method <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -70,12 +53,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-28 (-35.44%) : 2117.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCountSystem.__Canon:ubyte (FullOpts)

@@ -2,66 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> -; V02 arg1 [V02,T03] ( 3, 3 ) byref -> r15 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]> +; V02 arg1 [V02,T02] ( 3, 3 ) byref -> r15 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M55749_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; byrRegs +[r15]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M55749_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M55749_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M55749_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz - mov rdi, rax - jmp SHORT G_M55749_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M55749_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M55749_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M55749_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; byrRegs +[rdx]
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M55749_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M55749_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=4c6f263a) for method System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=4c6f263a) for method System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -69,12 +52,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+46 (+19.91%) : 817.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)

@@ -14,8 +14,8 @@ ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret <System.DateTime> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [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 -> rdi "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 -> rdi "field V13._ticks (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T03] ( 2, 9 ) long -> r13 hoist "CSE - aggressive" -; V22 cse1 [V22,T07] ( 3, 6 ) long -> r14 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 -> r13 hoist "CSE - aggressive" +; V24 cse1 [V24,T07] ( 3, 6 ) long -> r14 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -64,10 +66,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 r15d, xmm0
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD48], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD64], 13 + vmovups xmm2, xmmword ptr [reloc @RWD80] + vcvttsd2si edi, xmm0 + vpbroadcastd xmm0, edi + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd r15d, xmm1
mov r14, qword ptr [rbx] mov r13, qword ptr [r14+0x50]
- ;; size=31 bbWeight=1 PerfScore 30.00
+ ;; size=77 bbWeight=1 PerfScore 44.50
G_M23588_IG05: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -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 231, prolog size 19, PerfScore 184.33, instruction count 59, allocated bytes for code 231 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
+; Total bytes of code 277, prolog size 19, PerfScore 198.83, instruction count 65, allocated bytes for code 277 (MethodHash=fe77a3db) for method Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
; ============================================================ Unwind Info:

+14 (+20.90%) : 6065.dasm - System.Collections.Immutable.ImmutableArray1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray1[System.__Canon]:this (FullOpts)

@@ -2,66 +2,61 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; partially interruptible ; No matching PGO data ; 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 -> rsi single-def
+; V00 this [V00,T01] ( 3, 3 ) byref -> r15 this single-def +; V01 TypeCtx [V01,T00] ( 5, 5 ) long -> rbx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [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 -> r14 "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 -> rdi "argument with side effect" -; V09 rat0 [V09,T03] ( 3, 4 ) long -> rdi "runtime lookup" -; V10 rat1 [V10,T01] ( 3, 5.60) long -> rdi "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 = 8
+; Lcl frame size = 16
G_M44373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
+ push r15 + push r14
push rbx
- push rax - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x10], rsi - mov rbx, rdi - ; byrRegs +[rbx] - ;; size=15 bbWeight=1 PerfScore 4.75 -G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rdi, qword ptr [rsi+0x38] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - 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 rdi, rsi
+ sub rsp, 16 + mov qword ptr [rsp+0x08], rsi + mov r15, rdi + ; byrRegs +[r15] + mov rbx, rsi + ;; size=20 bbWeight=1 PerfScore 4.75 +G_M44373_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref + mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M44373_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref - mov rsi, gword ptr [rbx]
+ call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov r14, rax + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rsi, gword ptr [r15]
; gcrRegs +[rsi]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ mov rdi, r14 + call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rsi] +[rax]
- ; byrRegs -[rbx]
+ ; byrRegs -[r15] + ; gcr arg pop 0
nop
- ;; size=9 bbWeight=1 PerfScore 3.25 -G_M44373_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 8
+ ;; size=51 bbWeight=1 PerfScore 6.75 +G_M44373_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 16
pop rbx
- pop rbp
+ pop r14 + pop r15
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=10 bbWeight=1 PerfScore 2.75
-; Total bytes of code 67, prolog size 12, PerfScore 17.45, instruction count 22, allocated bytes for code 67 (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 81, prolog size 14, PerfScore 14.25, instruction count 23, allocated bytes for code 81 (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,11 +64,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x09 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 + CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+21 (+25.61%) : 8572.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingNameSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValuesProvider`1System.__Canon

@@ -8,21 +8,20 @@ ; 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 -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 5, 5 ) long -> rbx 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 -> rbx class-hnd single-def <System.String>
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <System.String>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+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 -> r11 "VirtualCall with runtime lookup"
+; V05 tmp2 [V05,T01] ( 3, 6 ) long -> r12 "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 -> r15 single-def "field V01.Node (fldOffset=0x0)" P-INDEP -; V11 tmp8 [V11,T05] ( 2, 2 ) ubyte -> r14 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V12 tmp9 [V12,T06] ( 2, 2 ) ref -> rax single-def "field V06.Node (fldOffset=0x0)" P-INDEP -; V13 tmp10 [V13,T07] ( 2, 2 ) ubyte -> rdx "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP -; V14 rat0 [V14,T02] ( 3, 5.60) long -> r11 "fgMakeTemp is creating a new local variable"
+; V10 tmp7 [V10,T03] ( 2, 2 ) ref -> r14 single-def "field V01.Node (fldOffset=0x0)" P-INDEP +; V11 tmp8 [V11,T04] ( 2, 2 ) ubyte -> r13 single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP +; V12 tmp9 [V12,T05] ( 2, 2 ) ref -> rax single-def "field V06.Node (fldOffset=0x0)" P-INDEP +; V13 tmp10 [V13,T06] ( 2, 2 ) ubyte -> rdx "field V06.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
; ; Lcl frame size = 8 @@ -30,49 +29,48 @@ G_M18340_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbp push r15 push r14
+ push r13 + push r12
push rbx push rax
- lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x20], rdi - mov r15, rsi
+ lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x30], rdi + mov rbx, rdi + mov r14, rsi + ; gcrRegs +[r14] + mov r13d, edx + mov r15, rcx
; gcrRegs +[r15]
- mov r14d, edx - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=25 bbWeight=1 PerfScore 7.25 -G_M18340_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov r11, qword ptr [rsi+0x10] - test r11, r11 - je SHORT G_M18340_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M18340_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M18340_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M18340_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=1 PerfScore 9.50 +G_M18340_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref + mov rdi, rbx
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov r11, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M18340_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rdi, r15
+ call CORINFO_HELP_MEMCPY + mov r12, rax + mov rdi, rbx + mov rsi, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + mov rdi, r14
; gcrRegs +[rdi]
- mov rsi, rbx
+ mov r11, r12 + mov rsi, r15
; gcrRegs +[rsi]
- call [r11] - ; gcrRegs -[rbx rsi rdi r15] +[rax] - movzx rdx, r14b - ;; size=13 bbWeight=1 PerfScore 3.75 -G_M18340_IG06: ; bbWeight=1, epilog, nogc, extend
+ call [r12] + ; gcrRegs -[rsi rdi r14-r15] +[rax] + movzx rdx, r13b + ;; size=56 bbWeight=1 PerfScore 7.25 +G_M18340_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx
+ pop r12 + pop r13
pop r14 pop r15 pop rbp ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 82, prolog size 16, PerfScore 21.40, instruction count 28, allocated bytes for code 82 (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 103, prolog size 20, PerfScore 21.00, instruction count 33, allocated bytes for code 103 (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: @@ -80,13 +78,15 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B + CountOfUnwindCodes: 7
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0B UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) + CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

realworld.run.linux.x64.checked.mch

-28 (-45.90%) : 11278.dasm - Microsoft.FSharp.Collections.SeqModule:EmptySystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon

@@ -2,51 +2,34 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [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 -> rsi "runtime lookup" -; V04 rat1 [V04,T01] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M15963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp - sub rsp, 16 - lea rbp, [rsp+0x10] - mov qword ptr [rbp-0x08], rdi - ;; size=14 bbWeight=1 PerfScore 2.75 -G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rsi, qword ptr [rsi+0x10] - test rsi, rsi - 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
+ push rax + mov qword ptr [rsp], rdi + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M15963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rsi, rax - ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M15963_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsi - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M15963_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16 - pop rbp
+ mov rdi, rax + ;; size=18 bbWeight=1 PerfScore 1.50 +G_M15963_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
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=11 bbWeight=1 PerfScore 2.75
+ ;; size=10 bbWeight=1 PerfScore 2.25
-; Total bytes of code 61, prolog size 14, PerfScore 12.90, instruction count 16, allocated bytes for code 61 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 33, prolog size 5, PerfScore 5.75, instruction count 7, allocated bytes for code 33 (MethodHash=3ea8c1a4) for method Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -54,10 +37,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x05 - CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08

-28 (-35.44%) : 5569.dasm - Microsoft.FSharp.Collections.ListModule:InitializeSystem.__Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon

@@ -2,64 +2,47 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T03] ( 3, 3 ) int -> r15 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T02] ( 3, 3 ) int -> r15 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M43339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov r15d, esi mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M43339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M43339_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M43339_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdi, rax - jmp SHORT G_M43339_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M43339_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M43339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M43339_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov esi, r15d mov rdx, rbx ; gcrRegs +[rdx]
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M43339_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M43339_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [Microsoft.FSharp.Primitives.Basics.List:init[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=cbea56b4) for method Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=cbea56b4) for method Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info: @@ -67,12 +50,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

-28 (-35.44%) : 5801.dasm - Microsoft.FSharp.Collections.ListModule:ChooseSystem.Canon,System.Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon

@@ -2,66 +2,49 @@ ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code
-; rbp based frame
+; rsp based frame
; fully interruptible ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.20) long -> rdi single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> rdi single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rdi "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rdi "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M21566_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
push r15 push rbx
- sub rsp, 16 - lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x18], rdi
+ push rax + mov qword ptr [rsp], rdi
mov rbx, rsi ; gcrRegs +[rbx] mov r15, rdx ; gcrRegs +[r15]
- ;; size=23 bbWeight=1 PerfScore 5.25 -G_M21566_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rsi, qword ptr [rdi+0x38] - mov rax, qword ptr [rsi+0x18] - test rax, rax - je SHORT G_M21566_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M21566_IG03: ; bbWeight=0.80, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - mov rdi, rax - jmp SHORT G_M21566_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M21566_IG04: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=14 bbWeight=1 PerfScore 4.50 +G_M21566_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_MEMCPY
; gcr arg pop 0 mov rdi, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30 -G_M21566_IG05: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, rbx ; gcrRegs +[rsi] mov rdx, r15 ; gcrRegs +[rdx]
- ;; size=6 bbWeight=1 PerfScore 0.50 -G_M21566_IG06: ; bbWeight=1, epilog, nogc, extend - add rsp, 16
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M21566_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 8
pop rbx pop r15
- pop rbp
tail.jmp [Microsoft.FSharp.Primitives.Basics.List:choose[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]] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 3.25
-; Total bytes of code 79, prolog size 23, PerfScore 16.85, instruction count 24, allocated bytes for code 79 (MethodHash=8610abc1) for method Microsoft.FSharp.Collections.ListModule:Choose[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)
+; Total bytes of code 51, prolog size 14, PerfScore 9.75, instruction count 15, allocated bytes for code 51 (MethodHash=8610abc1) for method Microsoft.FSharp.Collections.ListModule:Choose[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)
; ============================================================ Unwind Info: @@ -69,12 +52,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10 - CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)

+45 (+118.42%) : 12645.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)

@@ -8,13 +8,15 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def -; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def
+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def +; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def
; V02 arg2 [V02,T02] ( 4, 3 ) int -> rdi single-def ; V03 arg3 [V03,T01] ( 4, 3.50) int -> rsi single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 2 ) int -> rsi "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"
+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable" +; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -26,10 +28,16 @@ G_M33552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M33552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz vaddss xmm0, xmm1, xmm0 vroundss xmm0, xmm0, xmm0, 9
+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttss2si eax, xmm0
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, esi jle SHORT G_M33552_IG04
- ;; size=18 bbWeight=1 PerfScore 17.25
+ ;; size=63 bbWeight=1 PerfScore 31.75
G_M33552_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M33552_IG05 ;; size=2 bbWeight=0.50 PerfScore 1.00 @@ -45,8 +53,12 @@ G_M33552_IG06: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 4F0000004F000000h, 4F0000004F000000h +RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 38, prolog size 7, PerfScore 22.62, instruction count 15, allocated bytes for code 38 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
+ +; Total bytes of code 83, prolog size 7, PerfScore 37.12, instruction count 21, allocated bytes for code 83 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+45 (+118.42%) : 12646.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)

@@ -8,13 +8,15 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def -; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def
+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def +; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def
; V02 arg2 [V02,T02] ( 4, 3 ) int -> rdi single-def ; V03 arg3 [V03,T01] ( 4, 3.50) int -> rsi single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 2 ) int -> rsi "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"
+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable" +; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -26,10 +28,16 @@ G_M61631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M61631_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz vsubss xmm0, xmm1, xmm0 vroundss xmm0, xmm0, xmm0, 10
+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttss2si eax, xmm0
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, esi jle SHORT G_M61631_IG04
- ;; size=18 bbWeight=1 PerfScore 17.25
+ ;; size=63 bbWeight=1 PerfScore 31.75
G_M61631_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M61631_IG05 ;; size=2 bbWeight=0.50 PerfScore 1.00 @@ -45,8 +53,12 @@ G_M61631_IG06: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 4F0000004F000000h, 4F0000004F000000h +RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 38, prolog size 7, PerfScore 22.62, instruction count 15, allocated bytes for code 38 (MethodHash=da4a0f40) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)
+ +; Total bytes of code 83, prolog size 7, PerfScore 37.12, instruction count 21, allocated bytes for code 83 (MethodHash=da4a0f40) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+46 (+158.62%) : 4750.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 @@ -25,15 +27,25 @@ G_M44428_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi 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 rax, xmm0
- ;; size=25 bbWeight=1 PerfScore 17.58
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=71 bbWeight=1 PerfScore 32.08
G_M44428_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00 RWD00 dq 3F847AE147AE147Bh ; 0.01
+RWD08 dd 00000000h, 00000000h +RWD16 dq 0000000000000088h, 0000000000000000h +RWD32 dq 43E0000000000000h, 43E0000000000000h +RWD48 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 29, prolog size 3, PerfScore 19.58, instruction count 7, allocated bytes for code 29 (MethodHash=d8da5273) for method System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
+; Total bytes of code 75, prolog size 3, PerfScore 34.08, instruction count 13, allocated bytes for code 75 (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)
benchmarks.run.linux.x64.checked.mch 1,566 101 13 1,452 -5,181 +595
benchmarks.run_pgo.linux.x64.checked.mch 2,749 268 41 2,440 -16,906 +1,587
benchmarks.run_tiered.linux.x64.checked.mch 3,514 228 20 3,266 -16,671 +1,538
coreclr_tests.run.linux.x64.checked.mch 322 46 29 247 -364 +428
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 4,766 573 30 4,163 -20,742 +665
libraries_tests.run.linux.x64.Release.mch 2,491 305 6 2,180 -21,433 +246
librariestestsnotieredcompilation.run.linux.x64.Release.mch 1,823 136 21 1,666 -7,314 +544
realworld.run.linux.x64.checked.mch 4,949 319 40 4,590 -15,767 +2,302
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
22,180 1,976 200 20,004 -104,378 +7,905

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 4,755 206 4,549 479 (5.25%) 3,971 (43.52%)
benchmarks.run_pgo.linux.x64.checked.mch 15,194 12,448 2,746 179 (0.81%) 6,612 (29.78%)
benchmarks.run_tiered.linux.x64.checked.mch 16,306 14,055 2,251 78 (0.36%) 5,213 (23.79%)
coreclr_tests.run.linux.x64.checked.mch 2,258 1,403 855 37 (0.80%) 1,967 (42.57%)
libraries.crossgen2.linux.x64.checked.mch 8,092 8 8,084 0 (0.00%) 2,976 (25.96%)
libraries.pmi.linux.x64.checked.mch 12,191 0 12,191 416 (2.41%) 4,689 (27.14%)
libraries_tests.run.linux.x64.Release.mch 11,104 10,372 732 75 (0.46%) 4,834 (29.59%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 5,741 0 5,741 1,166 (10.85%) 4,604 (42.86%)
realworld.run.linux.x64.checked.mch 9,034 22 9,012 998 (7.13%) 4,572 (32.65%)
smoke_tests.nativeaot.linux.x64.checked.mch 7,923 2 7,921 212 (1.66%) 4,460 (34.90%)
92,598 38,516 54,082 3,640 (2.59%) 43,898 (31.25%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 721868 (overridden on cmd)
Total bytes of diff: 717282 (overridden on cmd)
Total bytes of delta: -4586 (-0.64 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          91 : 1259.dasm (73.98 % of base)
          54 : 3414.dasm (42.52 % of base)
          54 : 4334.dasm (39.42 % of base)
          50 : 8502.dasm (23.04 % of base)
          50 : 3408.dasm (49.02 % of base)
          50 : 5512.dasm (5.49 % of base)
          46 : 1510.dasm (158.62 % of base)
          46 : 3412.dasm (61.33 % of base)
          45 : 835.dasm (84.91 % of base)
          45 : 4488.dasm (4.27 % of base)
          40 : 5038.dasm (70.18 % of base)
          17 : 6826.dasm (6.25 % of base)
           7 : 4962.dasm (3.27 % of base)

Top file improvements (bytes):
        -322 : 6878.dasm (-21.54 % of base)
        -276 : 6241.dasm (-26.11 % of base)
        -225 : 1400.dasm (-18.63 % of base)
        -181 : 240.dasm (-31.92 % of base)
        -171 : 743.dasm (-33.08 % of base)
        -156 : 244.dasm (-25.00 % of base)
        -151 : 701.dasm (-24.04 % of base)
        -126 : 5410.dasm (-26.58 % of base)
        -125 : 9899.dasm (-15.90 % of base)
        -111 : 5199.dasm (-20.11 % of base)
        -111 : 634.dasm (-20.15 % of base)
        -109 : 7543.dasm (-32.63 % of base)
        -103 : 5294.dasm (-27.47 % of base)
         -84 : 10694.dasm (-17.95 % of base)
         -83 : 209.dasm (-21.17 % of base)
         -83 : 6272.dasm (-23.12 % of base)
         -70 : 6268.dasm (-20.53 % of base)
         -63 : 104.dasm (-18.05 % of base)
         -63 : 6400.dasm (-27.88 % of base)
         -62 : 10318.dasm (-22.38 % of base)

47 total files with Code Size differences (34 improved, 13 regressed), 27 unchanged.

Top method regressions (bytes):
          91 (73.98 % of base) : 1259.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          54 (39.42 % of base) : 4334.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
          54 (42.52 % of base) : 3414.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          50 (23.04 % of base) : 8502.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
          50 (5.49 % of base) : 5512.dasm - System.Double:SinPi(double):double (FullOpts)
          50 (49.02 % of base) : 3408.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
          46 (158.62 % of base) : 1510.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          46 (61.33 % of base) : 3412.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          45 (4.27 % of base) : 4488.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
          45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          40 (70.18 % of base) : 5038.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          17 (6.25 % of base) : 6826.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)
           7 (3.27 % of base) : 4962.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
        -322 (-21.54 % of base) : 6878.dasm - System.SpanHelpers:SequenceEqual[System.__Canon](byref,byref,int):ubyte (FullOpts)
        -276 (-26.11 % of base) : 6241.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)
        -225 (-18.63 % of base) : 1400.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)
        -181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -156 (-25.00 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-24.04 % of base) : 701.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 (-26.58 % of base) : 5410.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -125 (-15.90 % of base) : 9899.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
        -111 (-20.15 % of base) : 634.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -111 (-20.11 % of base) : 5199.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)
        -109 (-32.63 % of base) : 7543.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -103 (-27.47 % of base) : 5294.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -84 (-17.95 % of base) : 10694.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (FullOpts)
         -83 (-23.12 % of base) : 6272.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -83 (-21.17 % of base) : 209.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 (-20.53 % of base) : 6268.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 (-18.05 % of base) : 104.dasm - System.Array:Resize[System.__Canon](byref,int) (FullOpts)
         -63 (-27.88 % of base) : 6400.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -62 (-22.38 % of base) : 10318.dasm - System.Array:BinarySearch[System.__Canon](System.__Canon[],int,int,System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon]):int (FullOpts)

Top method regressions (percentages):
          46 (158.62 % of base) : 1510.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (73.98 % of base) : 1259.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          40 (70.18 % of base) : 5038.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          46 (61.33 % of base) : 3412.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          50 (49.02 % of base) : 3408.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
          54 (42.52 % of base) : 3414.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          54 (39.42 % of base) : 4334.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
          50 (23.04 % of base) : 8502.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
          17 (6.25 % of base) : 6826.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)
          50 (5.49 % of base) : 5512.dasm - System.Double:SinPi(double):double (FullOpts)
          45 (4.27 % of base) : 4488.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
           7 (3.27 % of base) : 4962.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):
         -28 (-35.44 % of base) : 5190.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 6271.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)
         -28 (-34.57 % of base) : 6998.dasm - ProtoBuf.Serializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
         -28 (-34.57 % of base) : 7970.dasm - Utf8Json.JsonSerializer:Deserialize[System.__Canon](ubyte[],Utf8Json.IJsonFormatterResolver):System.__Canon (FullOpts)
        -171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -109 (-32.63 % of base) : 7543.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -47 (-32.41 % of base) : 7018.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -28 (-30.43 % of base) : 10374.dasm - MessagePack.MessagePackSerializer:Serialize[System.__Canon](System.IO.Stream,System.__Canon) (FullOpts)
         -28 (-29.17 % of base) : 4110.dasm - System.Threading.Tasks.TaskCache:CreateCacheableTask[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
         -38 (-29.01 % of base) : 5762.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -63 (-27.88 % of base) : 6400.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -25 (-27.47 % of base) : 4783.dasm - System.SZArrayHelper:Contains[System.__Canon](System.__Canon):ubyte:this (FullOpts)
        -103 (-27.47 % of base) : 5294.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -37 (-27.41 % of base) : 4960.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         -18 (-27.27 % of base) : 1609.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder:Start[System.Text.Json.Serialization.Tests.ReadJson`1+<Setup>d__5[System.__Canon]](byref):this (FullOpts)
         -37 (-26.81 % of base) : 4880.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -28 (-26.67 % of base) : 5756.dasm - Sigil.Impl.LinqAlternative:_Reverse[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -126 (-26.58 % of base) : 5410.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -37 (-26.24 % of base) : 1661.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)


benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2059337 (overridden on cmd)
Total bytes of diff: 2044018 (overridden on cmd)
Total bytes of delta: -15319 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         143 : 5211.dasm (97.95 % of base)
         138 : 22461.dasm (87.34 % of base)
         106 : 13822.dasm (6.72 % of base)
          94 : 14684.dasm (11.60 % of base)
          80 : 6303.dasm (103.90 % of base)
          80 : 6665.dasm (103.90 % of base)
          74 : 2802.dasm (54.01 % of base)
          72 : 14118.dasm (78.26 % of base)
          72 : 14177.dasm (56.25 % of base)
          71 : 10553.dasm (83.53 % of base)
          71 : 13584.dasm (33.18 % of base)
          71 : 3078.dasm (112.70 % of base)
          66 : 18703.dasm (9.09 % of base)
          65 : 5116.dasm (25.79 % of base)
          46 : 6839.dasm (158.62 % of base)
          13 : 11312.dasm (11.11 % of base)
          13 : 13060.dasm (11.11 % of base)
          13 : 16612.dasm (11.11 % of base)
          13 : 18396.dasm (11.11 % of base)
          13 : 19060.dasm (11.11 % of base)

Top file improvements (bytes):
        -591 : 16933.dasm (-29.71 % of base)
        -464 : 2699.dasm (-48.84 % of base)
        -461 : 890.dasm (-49.25 % of base)
        -403 : 2505.dasm (-42.07 % of base)
        -403 : 900.dasm (-39.16 % of base)
        -347 : 5938.dasm (-35.44 % of base)
        -341 : 16931.dasm (-37.43 % of base)
        -340 : 3469.dasm (-44.04 % of base)
        -288 : 11626.dasm (-43.70 % of base)
        -288 : 16301.dasm (-41.50 % of base)
        -279 : 2278.dasm (-31.70 % of base)
        -240 : 8503.dasm (-42.93 % of base)
        -234 : 342.dasm (-37.50 % of base)
        -219 : 10592.dasm (-28.89 % of base)
        -213 : 11805.dasm (-36.98 % of base)
        -211 : 736.dasm (-35.82 % of base)
        -205 : 23441.dasm (-12.33 % of base)
        -195 : 8507.dasm (-36.38 % of base)
        -195 : 10819.dasm (-36.59 % of base)
        -162 : 2681.dasm (-34.03 % of base)

55 total files with Code Size differences (33 improved, 22 regressed), 20 unchanged.

Top method regressions (bytes):
         143 (97.95 % of base) : 5211.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 22461.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         106 (6.72 % of base) : 13822.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
          94 (11.60 % of base) : 14684.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          80 (103.90 % of base) : 6665.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 6303.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (54.01 % of base) : 2802.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (56.25 % of base) : 14177.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (78.26 % of base) : 14118.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (83.53 % of base) : 10553.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          71 (33.18 % of base) : 13584.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          71 (112.70 % of base) : 3078.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          66 (9.09 % of base) : 18703.dasm - System.Double:SinPi(double):double (Tier0)
          65 (25.79 % of base) : 5116.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
          46 (158.62 % of base) : 6839.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          13 (11.11 % of base) : 11312.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 13060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 16612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 18396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 19060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -591 (-29.71 % of base) : 16933.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)
        -464 (-48.84 % of base) : 2699.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -461 (-49.25 % of base) : 890.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -403 (-39.16 % of base) : 900.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -403 (-42.07 % of base) : 2505.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)
        -347 (-35.44 % of base) : 5938.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)
        -341 (-37.43 % of base) : 16931.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)
        -340 (-44.04 % of base) : 3469.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-43.70 % of base) : 11626.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -288 (-41.50 % of base) : 16301.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)
        -279 (-31.70 % of base) : 2278.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-42.93 % of base) : 8503.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)
        -234 (-37.50 % of base) : 342.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -219 (-28.89 % of base) : 10592.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
        -213 (-36.98 % of base) : 11805.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -211 (-35.82 % of base) : 736.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)
        -205 (-12.33 % of base) : 23441.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
        -195 (-36.59 % of base) : 10819.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -195 (-36.38 % of base) : 8507.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -162 (-34.03 % of base) : 2681.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):
          46 (158.62 % of base) : 6839.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (112.70 % of base) : 3078.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          80 (103.90 % of base) : 6665.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 6303.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.95 % of base) : 5211.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 22461.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          71 (83.53 % of base) : 10553.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          72 (78.26 % of base) : 14118.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          72 (56.25 % of base) : 14177.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          74 (54.01 % of base) : 2802.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          71 (33.18 % of base) : 13584.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          65 (25.79 % of base) : 5116.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
          94 (11.60 % of base) : 14684.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          13 (11.11 % of base) : 11312.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 13060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 16612.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 18396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 19060.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 10052.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          13 (11.11 % of base) : 12596.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (percentages):
        -461 (-49.25 % of base) : 890.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -464 (-48.84 % of base) : 2699.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -340 (-44.04 % of base) : 3469.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-43.70 % of base) : 11626.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) : 8503.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)
        -403 (-42.07 % of base) : 2505.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) : 20654.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
         -81 (-41.54 % of base) : 10332.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -288 (-41.50 % of base) : 16301.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 (-41.18 % of base) : 3468.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.95 % of base) : 3821.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.31 % of base) : 21328.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) : 886.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)
         -81 (-40.10 % of base) : 8621.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -129 (-39.81 % of base) : 2684.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)
        -403 (-39.16 % of base) : 900.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-38.39 % of base) : 7462.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -129 (-38.17 % of base) : 7460.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (Tier0)
        -234 (-37.50 % of base) : 342.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -341 (-37.43 % of base) : 16931.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)


benchmarks.run_tiered.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2163412 (overridden on cmd)
Total bytes of diff: 2148279 (overridden on cmd)
Total bytes of delta: -15133 (-0.70 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         143 : 3678.dasm (97.95 % of base)
         138 : 13603.dasm (87.34 % of base)
         106 : 11325.dasm (6.72 % of base)
          94 : 12181.dasm (11.60 % of base)
          91 : 9554.dasm (73.98 % of base)
          80 : 6046.dasm (103.90 % of base)
          74 : 2559.dasm (54.01 % of base)
          72 : 11688.dasm (56.25 % of base)
          72 : 18605.dasm (104.35 % of base)
          72 : 11630.dasm (78.26 % of base)
          72 : 19263.dasm (80.90 % of base)
          71 : 15588.dasm (83.53 % of base)
          71 : 17841.dasm (34.80 % of base)
          71 : 11049.dasm (33.18 % of base)
          71 : 2800.dasm (112.70 % of base)
          66 : 15879.dasm (9.09 % of base)
          65 : 3590.dasm (25.79 % of base)
          50 : 12803.dasm (23.04 % of base)
          46 : 16176.dasm (158.62 % of base)
          13 : 1617.dasm (11.11 % of base)

Top file improvements (bytes):
        -591 : 13041.dasm (-29.71 % of base)
        -464 : 2457.dasm (-48.95 % of base)
        -461 : 779.dasm (-49.25 % of base)
        -403 : 2253.dasm (-42.11 % of base)
        -403 : 787.dasm (-39.16 % of base)
        -347 : 13860.dasm (-35.44 % of base)
        -341 : 13039.dasm (-37.47 % of base)
        -340 : 4190.dasm (-44.16 % of base)
        -333 : 15013.dasm (-43.08 % of base)
        -288 : 12920.dasm (-41.50 % of base)
        -288 : 8938.dasm (-43.70 % of base)
        -279 : 2034.dasm (-31.70 % of base)
        -240 : 14263.dasm (-42.93 % of base)
        -234 : 327.dasm (-37.50 % of base)
        -219 : 5160.dasm (-28.89 % of base)
        -213 : 9125.dasm (-36.98 % of base)
        -211 : 677.dasm (-35.82 % of base)
        -205 : 19775.dasm (-12.33 % of base)
        -195 : 15809.dasm (-36.59 % of base)
        -195 : 4540.dasm (-36.38 % of base)

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

Top method regressions (bytes):
         143 (97.95 % of base) : 3678.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 13603.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         106 (6.72 % of base) : 11325.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
          94 (11.60 % of base) : 12181.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          91 (73.98 % of base) : 9554.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          80 (103.90 % of base) : 6046.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (54.01 % of base) : 2559.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (104.35 % of base) : 18605.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier0)
          72 (56.25 % of base) : 11688.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (80.90 % of base) : 19263.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (78.26 % of base) : 11630.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (34.80 % of base) : 17841.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) : 15588.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          71 (33.18 % of base) : 11049.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          71 (112.70 % of base) : 2800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          66 (9.09 % of base) : 15879.dasm - System.Double:SinPi(double):double (Tier0)
          65 (25.79 % of base) : 3590.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
          50 (23.04 % of base) : 12803.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier1)
          46 (158.62 % of base) : 16176.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          13 (11.11 % of base) : 1617.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)

Top method improvements (bytes):
        -591 (-29.71 % of base) : 13041.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)
        -464 (-48.95 % of base) : 2457.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -461 (-49.25 % of base) : 779.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -403 (-39.16 % of base) : 787.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -403 (-42.11 % of base) : 2253.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)
        -347 (-35.44 % of base) : 13860.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)
        -341 (-37.47 % of base) : 13039.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)
        -340 (-44.16 % of base) : 4190.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -333 (-43.08 % of base) : 15013.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -288 (-43.70 % of base) : 8938.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -288 (-41.50 % of base) : 12920.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)
        -279 (-31.70 % of base) : 2034.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-42.93 % of base) : 14263.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)
        -234 (-37.50 % of base) : 327.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -219 (-28.89 % of base) : 5160.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -213 (-36.98 % of base) : 9125.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -211 (-35.82 % of base) : 677.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)
        -205 (-12.33 % of base) : 19775.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
        -195 (-36.59 % of base) : 15809.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -195 (-36.38 % of base) : 4540.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)

Top method regressions (percentages):
          46 (158.62 % of base) : 16176.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (112.70 % of base) : 2800.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          72 (104.35 % of base) : 18605.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier0)
          80 (103.90 % of base) : 6046.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.95 % of base) : 3678.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 13603.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          71 (83.53 % of base) : 15588.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          72 (80.90 % of base) : 19263.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (Tier0)
          72 (78.26 % of base) : 11630.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          91 (73.98 % of base) : 9554.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          72 (56.25 % of base) : 11688.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          74 (54.01 % of base) : 2559.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          71 (34.80 % of base) : 17841.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 (33.18 % of base) : 11049.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          65 (25.79 % of base) : 3590.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier0)
          50 (23.04 % of base) : 12803.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (Tier1)
          94 (11.60 % of base) : 12181.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          13 (11.11 % of base) : 1617.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          66 (9.09 % of base) : 15879.dasm - System.Double:SinPi(double):double (Tier0)
         106 (6.72 % of base) : 11325.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)

Top method improvements (percentages):
        -461 (-49.25 % of base) : 779.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -464 (-48.95 % of base) : 2457.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -340 (-44.16 % of base) : 4190.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -288 (-43.70 % of base) : 8938.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -333 (-43.08 % of base) : 15013.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -240 (-42.93 % of base) : 14263.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)
        -403 (-42.11 % of base) : 2253.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) : 17272.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -288 (-41.50 % of base) : 12920.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.33 % of base) : 15418.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -133 (-41.18 % of base) : 4189.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-41.08 % of base) : 4322.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.31 % of base) : 17797.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) : 774.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)
         -81 (-40.10 % of base) : 19446.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 6900.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
         -81 (-40.10 % of base) : 20189.dasm - System.Text.Json.JsonSerializer:SerializeToUtf8Bytes[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):ubyte[] (Tier0)
        -129 (-39.81 % of base) : 2443.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)
        -403 (-39.16 % of base) : 787.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-38.39 % of base) : 7254.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.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 407681 (overridden on cmd)
Total bytes of diff: 407745 (overridden on cmd)
Total bytes of delta: 64 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          71 : 3265.dasm (110.94 % of base)
          71 : 669.dasm (33.18 % of base)
          53 : 2866.dasm (6.56 % of base)
          46 : 1823.dasm (158.62 % of base)
          46 : 2770.dasm (158.62 % of base)
          18 : 4312.dasm (8.96 % of base)
          16 : 4322.dasm (9.20 % of base)
          13 : 3873.dasm (10.74 % of base)
          13 : 4028.dasm (10.74 % of base)
          13 : 4242.dasm (8.13 % of base)
          11 : 4060.dasm (9.09 % of base)
           6 : 1168.dasm (4.84 % of base)
           3 : 3780.dasm (3.26 % of base)
           3 : 3792.dasm (3.26 % of base)
           3 : 4111.dasm (3.26 % of base)
           3 : 4121.dasm (3.75 % of base)
           3 : 4172.dasm (3.75 % of base)
           3 : 4182.dasm (3.75 % of base)
           3 : 4232.dasm (3.26 % of base)
           3 : 4272.dasm (3.26 % of base)

Top file improvements (bytes):
         -33 : 1912.dasm (-17.55 % of base)
         -33 : 1056.dasm (-17.55 % of base)
         -33 : 2613.dasm (-17.46 % of base)
         -33 : 437.dasm (-29.73 % of base)
         -28 : 2369.dasm (-30.11 % of base)
         -20 : 2217.dasm (-16.95 % of base)
          -5 : 3622.dasm (-6.58 % of base)
          -5 : 3804.dasm (-6.85 % of base)
          -5 : 3827.dasm (-6.85 % of base)
          -5 : 3833.dasm (-6.85 % of base)
          -5 : 3838.dasm (-6.58 % of base)
          -5 : 3844.dasm (-6.58 % of base)
          -5 : 3849.dasm (-5.75 % of base)
          -5 : 3861.dasm (-5.88 % of base)
          -5 : 3906.dasm (-6.85 % of base)
          -5 : 3946.dasm (-6.85 % of base)
          -5 : 3956.dasm (-6.85 % of base)
          -5 : 3966.dasm (-6.58 % of base)
          -5 : 3976.dasm (-6.58 % of base)
          -5 : 3986.dasm (-5.75 % of base)

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

Top method regressions (bytes):
          71 (110.94 % of base) : 3265.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
          71 (33.18 % of base) : 669.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          53 (6.56 % of base) : 2866.dasm - System.Diagnostics.ProcessWaitState:WaitForExit(int):ubyte:this (Tier1)
          46 (158.62 % of base) : 1823.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (158.62 % of base) : 2770.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          18 (8.96 % of base) : 4312.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          16 (9.20 % of base) : 4322.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (10.74 % of base) : 4028.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (10.74 % of base) : 3873.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          13 (8.13 % of base) : 4242.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          11 (9.09 % of base) : 4060.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
           6 (4.84 % of base) : 1168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           3 (3.26 % of base) : 3780.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           3 (3.26 % of base) : 4111.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.75 % of base) : 4121.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.75 % of base) : 4172.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.75 % of base) : 4182.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 4232.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 4272.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 3792.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)

Top method improvements (bytes):
         -33 (-29.73 % of base) : 437.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -33 (-17.55 % of base) : 1912.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)
         -33 (-17.55 % of base) : 1056.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)
         -33 (-17.46 % of base) : 2613.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 (Tier1)
         -28 (-30.11 % of base) : 2369.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -20 (-16.95 % of base) : 2217.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
          -5 (-6.58 % of base) : 3622.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -5 (-6.85 % of base) : 3906.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3827.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.85 % of base) : 3833.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-5.88 % of base) : 4006.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.58 % of base) : 3838.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.58 % of base) : 3844.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-5.75 % of base) : 3849.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-5.75 % of base) : 4037.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-5.88 % of base) : 3861.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-4.95 % of base) : 4070.dasm - NullableTest17:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.58 % of base) : 4088.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-4.35 % of base) : 4141.dasm - NullableTest24:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-4.95 % of base) : 4202.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method regressions (percentages):
          46 (158.62 % of base) : 1823.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (158.62 % of base) : 2770.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (110.94 % of base) : 3265.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
          71 (33.18 % of base) : 669.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (Tier0)
          13 (10.74 % of base) : 4028.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (10.74 % of base) : 3873.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          16 (9.20 % of base) : 4322.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          11 (9.09 % of base) : 4060.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          18 (8.96 % of base) : 4312.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (8.13 % of base) : 4242.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          53 (6.56 % of base) : 2866.dasm - System.Diagnostics.ProcessWaitState:WaitForExit(int):ubyte:this (Tier1)
           6 (4.84 % of base) : 1168.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           3 (3.75 % of base) : 4121.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.75 % of base) : 4172.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.75 % of base) : 4182.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 3780.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           3 (3.26 % of base) : 4111.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 4232.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 4272.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           3 (3.26 % of base) : 3792.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)

Top method improvements (percentages):
         -28 (-30.11 % of base) : 2369.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -33 (-29.73 % of base) : 437.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -33 (-17.55 % of base) : 1912.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)
         -33 (-17.55 % of base) : 1056.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)
         -33 (-17.46 % of base) : 2613.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 (Tier1)
         -20 (-16.95 % of base) : 2217.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
          -5 (-6.85 % of base) : 3906.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3827.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.85 % of base) : 3833.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.85 % of base) : 3946.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3804.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.85 % of base) : 3956.dasm - NullableTest6:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.58 % of base) : 3622.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -5 (-6.58 % of base) : 3838.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.58 % of base) : 3844.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.58 % of base) : 4088.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.58 % of base) : 3966.dasm - NullableTest7:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.58 % of base) : 3976.dasm - NullableTest8:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-5.88 % of base) : 4006.dasm - NullableTest11:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-5.88 % of base) : 3861.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)


libraries.pmi.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 737374 (overridden on cmd)
Total bytes of diff: 717297 (overridden on cmd)
Total bytes of delta: -20077 (-2.72 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         137 : 12390.dasm (27.51 % of base)
          73 : 9701.dasm (9.61 % of base)
          64 : 8996.dasm (22.15 % of base)
          45 : 11003.dasm (51.72 % of base)
          45 : 11006.dasm (59.21 % of base)
          45 : 11027.dasm (59.21 % of base)
          45 : 11024.dasm (51.72 % of base)
          29 : 12166.dasm (13.36 % of base)
          27 : 12110.dasm (23.48 % of base)
          22 : 8601.dasm (8.37 % of base)
          14 : 10559.dasm (5.60 % of base)
          14 : 13036.dasm (10.85 % of base)
          13 : 10138.dasm (15.29 % of base)
          11 : 12145.dasm (9.82 % of base)
          11 : 15336.dasm (7.86 % of base)
          10 : 12143.dasm (8.85 % of base)
           8 : 18305.dasm (1.94 % of base)
           6 : 15294.dasm (4.05 % of base)
           6 : 5256.dasm (2.52 % of base)
           6 : 5260.dasm (1.35 % of base)

Top file improvements (bytes):
        -148 : 12494.dasm (-22.02 % of base)
        -122 : 6312.dasm (-24.50 % of base)
        -122 : 2372.dasm (-24.50 % of base)
        -120 : 2370.dasm (-33.33 % of base)
        -120 : 2374.dasm (-33.33 % of base)
        -118 : 12536.dasm (-22.78 % of base)
        -118 : 12496.dasm (-23.51 % of base)
        -117 : 1301.dasm (-29.92 % of base)
        -116 : 13386.dasm (-17.96 % of base)
        -115 : 2376.dasm (-27.91 % of base)
        -109 : 10618.dasm (-24.55 % of base)
        -108 : 5268.dasm (-22.93 % of base)
        -106 : 8872.dasm (-26.04 % of base)
        -106 : 8520.dasm (-27.11 % of base)
        -103 : 12519.dasm (-21.68 % of base)
        -103 : 5312.dasm (-26.68 % of base)
        -103 : 11729.dasm (-25.00 % of base)
        -100 : 9706.dasm (-13.16 % of base)
         -99 : 2621.dasm (-30.75 % of base)
         -99 : 2625.dasm (-30.75 % of base)

64 total files with Code Size differences (41 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
         137 (27.51 % of base) : 12390.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)
          73 (9.61 % of base) : 9701.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)
          64 (22.15 % of base) : 8996.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 (51.72 % of base) : 11024.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 (59.21 % of base) : 11027.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 (51.72 % of base) : 11003.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 (59.21 % of base) : 11006.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)
          29 (13.36 % of base) : 12166.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)
          27 (23.48 % of base) : 12110.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)
          22 (8.37 % of base) : 8601.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)
          14 (5.60 % of base) : 10559.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)
          14 (10.85 % of base) : 13036.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)
          13 (15.29 % of base) : 10138.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          11 (7.86 % of base) : 15336.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)
          11 (9.82 % of base) : 12145.dasm - Microsoft.FSharp.Core.ValueOption:FoldBack[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
          10 (8.85 % of base) : 12143.dasm - Microsoft.FSharp.Core.ValueOption:Fold[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):System.Nullable`1[int] (FullOpts)
           8 (1.94 % of base) : 18305.dasm - System.Reflection.Metadata.PropertyDefinition:DecodeSignature[System.__Canon,System.Nullable`1[int]](System.Reflection.Metadata.ISignatureTypeProvider`2[System.__Canon,System.Nullable`1[int]],System.Nullable`1[int]):System.Reflection.Metadata.MethodSignature`1[System.__Canon]:this (FullOpts)
           6 (1.35 % of base) : 5260.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.52 % of base) : 5256.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.05 % of base) : 15294.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.02 % of base) : 12494.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 (-24.50 % of base) : 2372.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 (-24.50 % of base) : 6312.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)
        -120 (-33.33 % of base) : 2370.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)
        -120 (-33.33 % of base) : 2374.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)
        -118 (-23.51 % of base) : 12496.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)
        -118 (-22.78 % of base) : 12536.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)
        -117 (-29.92 % of base) : 1301.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)
        -116 (-17.96 % of base) : 13386.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)
        -115 (-27.91 % of base) : 2376.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)
        -109 (-24.55 % of base) : 10618.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 (-22.93 % of base) : 5268.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)
        -106 (-26.04 % of base) : 8872.dasm - Microsoft.FSharp.Collections.MapTreeModule:partition1[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.Nullable`1[int],ubyte],System.__Canon,System.Nullable`1[int],Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]],Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -106 (-27.11 % of base) : 8520.dasm - Microsoft.FSharp.Collections.SetTreeModule:partition1[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon,Microsoft.FSharp.Collections.SetTree`1[System.__Canon],Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
        -103 (-26.68 % of base) : 5312.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.00 % of base) : 11729.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)
        -103 (-21.68 % of base) : 12519.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)
        -100 (-13.16 % of base) : 9706.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:sortChunk@2484-1[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],Microsoft.FSharp.Core.FSharpFunc`2[System.ArraySegment`1[System.Nullable`1[int]],System.Tuple`2[System.ArraySegment`1[System.Nullable`1[int]],System.ArraySegment`1[System.Nullable`1[int]]]],System.Collections.Generic.IComparer`1[System.__Canon],System.ArraySegment`1[System.Nullable`1[int]],int) (FullOpts)
         -99 (-30.75 % of base) : 2621.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)
         -99 (-30.75 % of base) : 2625.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)

Top method regressions (percentages):
          45 (59.21 % of base) : 11027.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 (59.21 % of base) : 11006.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 (51.72 % of base) : 11024.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 (51.72 % of base) : 11003.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)
         137 (27.51 % of base) : 12390.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)
          27 (23.48 % of base) : 12110.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)
          64 (22.15 % of base) : 8996.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)
          13 (15.29 % of base) : 10138.dasm - Microsoft.FSharp.Collections.ListModule:Singleton[System.__Canon](System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          29 (13.36 % of base) : 12166.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 (10.85 % of base) : 13036.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)
          11 (9.82 % of base) : 12145.dasm - Microsoft.FSharp.Core.ValueOption:FoldBack[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon],System.Nullable`1[int]):System.Nullable`1[int] (FullOpts)
          73 (9.61 % of base) : 9701.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)
          10 (8.85 % of base) : 12143.dasm - Microsoft.FSharp.Core.ValueOption:Fold[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):System.Nullable`1[int] (FullOpts)
          22 (8.37 % of base) : 8601.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)
          11 (7.86 % of base) : 15336.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)
          14 (5.60 % of base) : 10559.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)
           6 (4.05 % of base) : 15294.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)
           4 (3.92 % of base) : 12151.dasm - Microsoft.FSharp.Core.ValueOption:Contains[System.__Canon](System.__Canon,Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]):ubyte (FullOpts)
           4 (3.54 % of base) : 12164.dasm - Microsoft.FSharp.Core.ValueOption:Flatten[System.__Canon](Microsoft.FSharp.Core.FSharpValueOption`1[Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
           5 (3.11 % of base) : 12170.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):
         -28 (-45.90 % of base) : 9176.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
         -28 (-45.90 % of base) : 11975.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -28 (-45.90 % of base) : 12008.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -28 (-45.90 % of base) : 10065.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -28 (-45.90 % of base) : 10463.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -28 (-45.90 % of base) : 15538.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
         -28 (-45.90 % of base) : 15524.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
         -28 (-45.16 % of base) : 11977.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -28 (-45.16 % of base) : 12013.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -28 (-45.16 % of base) : 12012.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -28 (-43.08 % of base) : 11842.dasm - Microsoft.FSharp.Collections.IEnumerator:Empty[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -47 (-35.61 % of base) : 9668.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
         -47 (-35.61 % of base) : 9672.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-1[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
         -47 (-35.61 % of base) : 9678.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:valueFactory@2231-2[System.__Canon]():System.Func`2[System.__Canon,System.__Canon] (FullOpts)
         -47 (-35.61 % of base) : 2355.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)
         -47 (-35.61 % of base) : 6316.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Yield[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
         -47 (-35.61 % of base) : 6286.dasm - Microsoft.FSharp.Core.CompilerServices.ResumableCode:Zero[System.__Canon]():Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[System.__Canon,System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 10201.dasm - Microsoft.FSharp.Collections.ListModule:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 10053.dasm - Microsoft.FSharp.Collections.ListModule:MapIndexed[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.Nullable`1[int]] (FullOpts)
         -28 (-35.44 % of base) : 2713.dasm - Microsoft.FSharp.Core.ExtraTopLevelOperators:PrintFormatLineToTextWriter[System.__Canon](System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)


libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1447569 (overridden on cmd)
Total bytes of diff: 1426382 (overridden on cmd)
Total bytes of delta: -21187 (-1.46 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         196 : 11460.dasm (39.52 % of base)
          18 : 4533.dasm (6.00 % of base)
          17 : 3726.dasm (6.23 % of base)
           6 : 4668.dasm (4.84 % of base)
           6 : 1144.dasm (4.84 % of base)
           3 : 6489.dasm (0.97 % of base)

Top file improvements (bytes):
        -464 : 49.dasm (-48.84 % of base)
        -461 : 43.dasm (-49.20 % of base)
        -403 : 1555.dasm (-39.24 % of base)
        -403 : 164.dasm (-42.07 % of base)
        -288 : 171.dasm (-42.99 % of base)
        -288 : 2288.dasm (-43.70 % of base)
        -288 : 684.dasm (-42.99 % of base)
        -282 : 17749.dasm (-27.81 % of base)
        -279 : 1584.dasm (-31.74 % of base)
        -240 : 5423.dasm (-43.01 % of base)
        -237 : 3076.dasm (-46.84 % of base)
        -234 : 16241.dasm (-42.39 % of base)
        -234 : 6455.dasm (-37.50 % of base)
        -227 : 15141.dasm (-24.67 % of base)
        -225 : 11615.dasm (-20.38 % of base)
        -213 : 11323.dasm (-36.79 % of base)
        -211 : 1825.dasm (-36.01 % of base)
        -195 : 5094.dasm (-36.45 % of base)
        -186 : 2573.dasm (-19.18 % of base)
        -180 : 20306.dasm (-41.00 % of base)

39 total files with Code Size differences (33 improved, 6 regressed), 34 unchanged.

Top method regressions (bytes):
         196 (39.52 % of base) : 11460.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
          18 (6.00 % of base) : 4533.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
          17 (6.23 % of base) : 3726.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           6 (4.84 % of base) : 4668.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           6 (4.84 % of base) : 1144.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           3 (0.97 % of base) : 6489.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

Top method improvements (bytes):
        -464 (-48.84 % of base) : 49.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -461 (-49.20 % of base) : 43.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -403 (-39.24 % of base) : 1555.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -403 (-42.07 % of base) : 164.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)
        -288 (-43.70 % of base) : 2288.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -288 (-42.99 % of base) : 684.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.99 % of base) : 171.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -282 (-27.81 % of base) : 17749.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] (Tier0)
        -279 (-31.74 % of base) : 1584.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-43.01 % of base) : 5423.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -237 (-46.84 % of base) : 3076.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -234 (-37.50 % of base) : 6455.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
        -234 (-42.39 % of base) : 16241.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
        -227 (-24.67 % of base) : 15141.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
        -225 (-20.38 % of base) : 11615.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 (Tier0)
        -213 (-36.79 % of base) : 11323.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
        -211 (-36.01 % of base) : 1825.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -195 (-36.45 % of base) : 5094.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -186 (-19.18 % of base) : 2573.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)
        -180 (-41.00 % of base) : 20306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)

Top method regressions (percentages):
         196 (39.52 % of base) : 11460.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
          17 (6.23 % of base) : 3726.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          18 (6.00 % of base) : 4533.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)
           6 (4.84 % of base) : 4668.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           6 (4.84 % of base) : 1144.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           3 (0.97 % of base) : 6489.dasm - System.Collections.Hashtable:KeyEquals(System.Object,System.Object):ubyte:this (Tier1)

Top method improvements (percentages):
        -461 (-49.20 % of base) : 43.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -464 (-48.84 % of base) : 49.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -237 (-46.84 % of base) : 3076.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
         -28 (-45.90 % of base) : 12382.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
        -129 (-44.18 % of base) : 9080.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
        -129 (-43.88 % of base) : 7255.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -288 (-43.70 % of base) : 2288.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -81 (-43.55 % of base) : 12262.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
         -81 (-43.55 % of base) : 5315.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]] (Tier0)
        -129 (-43.43 % of base) : 6607.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
        -240 (-43.01 % of base) : 5423.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -288 (-42.99 % of base) : 684.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Instrumented Tier0)
        -288 (-42.99 % of base) : 171.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -147 (-42.86 % of base) : 17005.dasm - System.Linq.ImmutableArrayExtensions:Last[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.__Canon (Tier0)
        -234 (-42.39 % of base) : 16241.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
         -81 (-42.19 % of base) : 9268.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] (Tier0)
         -81 (-42.19 % of base) : 7160.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] (Tier0)
        -403 (-42.07 % of base) : 164.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)
        -129 (-41.88 % of base) : 9153.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
         -81 (-41.75 % of base) : 5781.dasm - Roslyn.Utilities.EnumerableExtensions:ToImmutableDictionaryOrEmpty[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]]):System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int] (Tier0)


librariestestsnotieredcompilation.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 830863 (overridden on cmd)
Total bytes of diff: 824093 (overridden on cmd)
Total bytes of delta: -6770 (-0.81 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          67 : 6339.dasm (10.55 % of base)
          62 : 4121.dasm (6.49 % of base)
          61 : 9902.dasm (10.23 % of base)
          50 : 4898.dasm (2.76 % of base)
          46 : 817.dasm (19.91 % of base)
          39 : 2904.dasm (13.78 % of base)
          38 : 6652.dasm (18.01 % of base)
          26 : 10369.dasm (5.74 % of base)
          25 : 9909.dasm (5.38 % of base)
          23 : 10934.dasm (9.47 % of base)
          21 : 8572.dasm (25.61 % of base)
          18 : 1432.dasm (19.15 % of base)
          17 : 68.dasm (6.23 % of base)
          14 : 6065.dasm (20.90 % of base)
           8 : 5466.dasm (6.25 % of base)
           8 : 2909.dasm (0.89 % of base)
           8 : 9616.dasm (4.68 % of base)
           7 : 2365.dasm (3.27 % of base)
           3 : 5464.dasm (3.00 % of base)
           2 : 11078.dasm (3.23 % of base)

Top file improvements (bytes):
        -327 : 9890.dasm (-26.76 % of base)
        -303 : 981.dasm (-26.46 % of base)
        -280 : 10549.dasm (-9.94 % of base)
        -276 : 3065.dasm (-26.11 % of base)
        -225 : 2986.dasm (-7.70 % of base)
        -181 : 9.dasm (-31.92 % of base)
        -179 : 3424.dasm (-12.43 % of base)
        -171 : 12.dasm (-33.08 % of base)
        -156 : 454.dasm (-25.00 % of base)
        -153 : 3315.dasm (-29.82 % of base)
        -151 : 66.dasm (-24.04 % of base)
        -151 : 3072.dasm (-19.53 % of base)
        -151 : 738.dasm (-20.41 % of base)
        -143 : 8533.dasm (-36.20 % of base)
        -128 : 8568.dasm (-15.22 % of base)
        -111 : 485.dasm (-20.63 % of base)
        -111 : 467.dasm (-20.15 % of base)
        -109 : 3425.dasm (-32.63 % of base)
        -103 : 843.dasm (-27.47 % of base)
         -94 : 6050.dasm (-15.59 % of base)

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

Top method regressions (bytes):
          67 (10.55 % of base) : 6339.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)
          62 (6.49 % of base) : 4121.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 (10.23 % of base) : 9902.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          50 (2.76 % of base) : 4898.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
          46 (19.91 % of base) : 817.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          39 (13.78 % of base) : 2904.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)
          38 (18.01 % 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)
          26 (5.74 % of base) : 10369.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          25 (5.38 % of base) : 9909.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          23 (9.47 % of base) : 10934.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          21 (25.61 % of base) : 8572.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          18 (19.15 % of base) : 1432.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          17 (6.23 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          14 (20.90 % of base) : 6065.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
           8 (4.68 % of base) : 9616.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
           8 (6.25 % of base) : 5466.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 (0.89 % of base) : 2909.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
           7 (3.27 % of base) : 2365.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)
           3 (3.00 % of base) : 5464.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)
           2 (3.23 % of base) : 11078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)

Top method improvements (bytes):
        -327 (-26.76 % of base) : 9890.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)
        -303 (-26.46 % of base) : 981.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)
        -280 (-9.94 % of base) : 10549.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -276 (-26.11 % of base) : 3065.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)
        -225 (-7.70 % of base) : 2986.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -181 (-31.92 % 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)
        -179 (-12.43 % of base) : 3424.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)
        -171 (-33.08 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -156 (-25.00 % of base) : 454.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -153 (-29.82 % of base) : 3315.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -151 (-19.53 % of base) : 3072.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)
        -151 (-20.41 % of base) : 738.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)
        -151 (-24.04 % 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)
        -143 (-36.20 % of base) : 8533.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -128 (-15.22 % of base) : 8568.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)
        -111 (-20.15 % of base) : 467.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -111 (-20.63 % of base) : 485.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)
        -109 (-32.63 % of base) : 3425.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -103 (-27.47 % of base) : 843.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -94 (-15.59 % of base) : 6050.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)

Top method regressions (percentages):
          21 (25.61 % of base) : 8572.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          14 (20.90 % of base) : 6065.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          46 (19.91 % of base) : 817.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          18 (19.15 % of base) : 1432.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          38 (18.01 % 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)
          39 (13.78 % of base) : 2904.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)
          67 (10.55 % of base) : 6339.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)
          61 (10.23 % of base) : 9902.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          23 (9.47 % of base) : 10934.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          62 (6.49 % of base) : 4121.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 (6.25 % of base) : 5466.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)
          17 (6.23 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          26 (5.74 % of base) : 10369.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          25 (5.38 % of base) : 9909.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
           8 (4.68 % of base) : 9616.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
           7 (3.27 % of base) : 2365.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)
           2 (3.23 % of base) : 11078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           3 (3.00 % of base) : 5464.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)
          50 (2.76 % of base) : 4898.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
           8 (0.89 % of base) : 2909.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)

Top method improvements (percentages):
         -28 (-45.90 % of base) : 2137.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -143 (-36.20 % of base) : 8533.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
         -28 (-35.44 % of base) : 168.dasm - <PrivateImplementationDetails>:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 69.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 4831.dasm - Microsoft.CodeAnalysis.Collections.RoslynImmutableInterlocked:InterlockedExchange[System.__Canon](byref,Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 6936.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectAsArray[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 2117.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -28 (-34.57 % of base) : 5300.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -28 (-34.57 % of base) : 5333.dasm - System.Linq.Expressions.Expression:Lambda[System.__Canon](System.Linq.Expressions.Expression,System.Linq.Expressions.ParameterExpression[]):System.Linq.Expressions.Expression`1[System.__Canon] (FullOpts)
        -171 (-33.08 % of base) : 12.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -109 (-32.63 % of base) : 3425.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -28 (-32.56 % of base) : 2375.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.__Canon](int):System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon] (FullOpts)
         -28 (-32.18 % of base) : 3185.dasm - Microsoft.VisualStudio.Composition.ExportProvider:GetExports[System.__Canon,System.__Canon](System.String):System.Collections.Generic.IEnumerable`1[System.__Canon]:this (FullOpts)
         -24 (-32.00 % of base) : 5292.dasm - System.Linq.Enumerable:SingleOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
        -181 (-31.92 % 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)
         -21 (-31.82 % of base) : 4651.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -21 (-31.82 % of base) : 7236.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -21 (-30.88 % of base) : 3712.dasm - System.Linq.Enumerable:Distinct[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -64 (-30.48 % of base) : 5898.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlyCollection[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (FullOpts)
         -21 (-30.00 % of base) : 4709.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.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1403564 (overridden on cmd)
Total bytes of diff: 1390099 (overridden on cmd)
Total bytes of delta: -13465 (-0.96 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         164 : 12552.dasm (176.34 % of base)
         160 : 12608.dasm (15.09 % of base)
         159 : 1386.dasm (3.58 % of base)
         159 : 12079.dasm (124.22 % of base)
         135 : 12474.dasm (64.90 % of base)
         131 : 1352.dasm (38.08 % of base)
         117 : 6303.dasm (16.25 % of base)
          98 : 12351.dasm (42.06 % of base)
          91 : 1121.dasm (73.98 % of base)
          83 : 11988.dasm (38.07 % of base)
          79 : 12243.dasm (40.51 % of base)
          62 : 12585.dasm (92.54 % of base)
          54 : 14656.dasm (42.52 % of base)
          50 : 12168.dasm (34.48 % of base)
          50 : 13913.dasm (56.18 % of base)
          50 : 14653.dasm (49.02 % of base)
          50 : 10449.dasm (23.04 % of base)
          50 : 14784.dasm (2.16 % of base)
          49 : 13956.dasm (20.33 % of base)
          46 : 4750.dasm (158.62 % of base)

Top file improvements (bytes):
        -298 : 9705.dasm (-28.54 % of base)
        -272 : 3342.dasm (-26.20 % of base)
        -184 : 8970.dasm (-28.44 % of base)
        -181 : 240.dasm (-31.92 % of base)
        -174 : 7625.dasm (-23.97 % of base)
        -174 : 6138.dasm (-23.32 % of base)
        -172 : 5219.dasm (-12.30 % of base)
        -171 : 743.dasm (-33.08 % of base)
        -159 : 13016.dasm (-24.09 % of base)
        -156 : 244.dasm (-25.00 % of base)
        -151 : 14441.dasm (-20.41 % of base)
        -151 : 701.dasm (-24.04 % of base)
        -148 : 5016.dasm (-22.02 % of base)
        -147 : 8344.dasm (-24.83 % of base)
        -140 : 5321.dasm (-27.94 % of base)
        -139 : 9704.dasm (-19.74 % of base)
        -125 : 10033.dasm (-24.80 % of base)
        -121 : 9427.dasm (-5.24 % of base)
        -119 : 7820.dasm (-18.17 % of base)
        -119 : 7477.dasm (-24.74 % of base)

66 total files with Code Size differences (41 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
         164 (176.34 % of base) : 12552.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32:Pack(byref):this (FullOpts)
         160 (15.09 % of base) : 12608.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.TransformUtils:GetTransformedRectangle(SixLabors.ImageSharp.Rectangle,System.Numerics.Matrix3x2):SixLabors.ImageSharp.Rectangle (FullOpts)
         159 (3.58 % of base) : 1386.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
         159 (124.22 % of base) : 12079.dasm - SixLabors.ImageSharp.SimdUtils+FallbackIntrinsics128:NormalizedFloatToByteSaturate(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
         135 (64.90 % of base) : 12474.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
         131 (38.08 % of base) : 1352.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
         117 (16.25 % of base) : 6303.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)
          98 (42.06 % of base) : 12351.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
          91 (73.98 % of base) : 1121.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          83 (38.07 % of base) : 11988.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
          79 (40.51 % of base) : 12243.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
          62 (92.54 % of base) : 12585.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
          54 (42.52 % of base) : 14656.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          50 (23.04 % of base) : 10449.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)
          50 (34.48 % of base) : 12168.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
          50 (2.16 % of base) : 14784.dasm - System.Net.Http.HttpConnectionPool+<AddHttp11ConnectionAsync>d__79:MoveNext():this (FullOpts)
          50 (49.02 % of base) : 14653.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
          50 (56.18 % of base) : 13913.dasm - System.Threading.Tasks.Dataflow.Internal.Common:IsValidTimeout(System.TimeSpan):ubyte (FullOpts)
          49 (20.33 % of base) : 13956.dasm - Microsoft.ML.Internal.Utilities.MathUtils:SigmoidFast(float):float (FullOpts)
          46 (158.62 % of base) : 4750.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)

Top method improvements (bytes):
        -298 (-28.54 % of base) : 9705.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)
        -272 (-26.20 % of base) : 3342.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)
        -184 (-28.44 % of base) : 8970.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)
        -181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
        -174 (-23.32 % of base) : 6138.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)
        -174 (-23.97 % of base) : 7625.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)
        -172 (-12.30 % of base) : 5219.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)
        -171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -159 (-24.09 % of base) : 13016.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -156 (-25.00 % of base) : 244.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-20.41 % of base) : 14441.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)
        -151 (-24.04 % of base) : 701.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.02 % of base) : 5016.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)
        -147 (-24.83 % of base) : 8344.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 (-27.94 % of base) : 5321.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)
        -139 (-19.74 % of base) : 9704.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)
        -125 (-24.80 % of base) : 10033.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)
        -121 (-5.24 % of base) : 9427.dasm - FSharp.Compiler.CheckExpressions:AnalyzeRecursiveStaticMemberOrValDecl[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,FSharp.Compiler.Syntax.Ident](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,System.__Canon,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.CheckExpressions+OverridesOK,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+MemberOrValContainerInfo],Microsoft.FSharp.Core.FSharpOption`1[System.__Canon],FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],FSharp.Compiler.Syntax.SynValInfo,FSharp.Compiler.TypedTree+TType,System.__Canon,FSharp.Compiler.Text.Range,System.__Canon):System.Tuple`8[System.__Canon,System.__Canon,FSharp.Compiler.Syntax.Ident,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon] (FullOpts)
        -119 (-18.17 % of base) : 7820.dasm - FSharp.Compiler.InfoReader:GetMostSpecificItemsByType[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
        -119 (-24.74 % of base) : 7477.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)

Top method regressions (percentages):
         164 (176.34 % of base) : 12552.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32:Pack(byref):this (FullOpts)
          46 (158.62 % of base) : 4750.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
         159 (124.22 % of base) : 12079.dasm - SixLabors.ImageSharp.SimdUtils+FallbackIntrinsics128:NormalizedFloatToByteSaturate(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
          45 (118.42 % of base) : 12645.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
          45 (118.42 % of base) : 12646.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeStart(float,float,int,int):int (FullOpts)
          62 (92.54 % of base) : 12585.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
          45 (84.91 % of base) : 835.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (73.98 % of base) : 1121.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          45 (68.18 % of base) : 12348.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:CalculatePaletteSpread(int):int (FullOpts)
         135 (64.90 % of base) : 12474.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
          45 (57.69 % of base) : 3228.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)
          50 (56.18 % of base) : 13913.dasm - System.Threading.Tasks.Dataflow.Internal.Common:IsValidTimeout(System.TimeSpan):ubyte (FullOpts)
          50 (49.02 % of base) : 14653.dasm - System.Threading.CancellationTokenSource:CancelAfter(System.TimeSpan):this (FullOpts)
          54 (42.52 % of base) : 14656.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          98 (42.06 % of base) : 12351.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
          79 (40.51 % of base) : 12243.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
         131 (38.08 % of base) : 1352.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
          83 (38.07 % of base) : 11988.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
          50 (34.48 % of base) : 12168.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
          50 (23.04 % of base) : 10449.dasm - Perfolizer.Mathematics.QuantileEstimators.SimpleQuantileEstimator:GetQuantileFromSorted(System.Collections.Generic.IReadOnlyList`1[double],double):double:this (FullOpts)

Top method improvements (percentages):
         -28 (-45.90 % of base) : 11278.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 12044.dasm - <PrivateImplementationDetails>:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[System.__Canon],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 12028.dasm - <PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 5801.dasm - Microsoft.FSharp.Collections.ListModule:Choose[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)
         -28 (-35.44 % of base) : 2850.dasm - Microsoft.FSharp.Collections.ListModule:Collect[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)
         -28 (-35.44 % of base) : 5003.dasm - Microsoft.FSharp.Collections.ListModule:Exists[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):ubyte (FullOpts)
         -28 (-35.44 % of base) : 2966.dasm - Microsoft.FSharp.Collections.ListModule:Filter[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 6228.dasm - Microsoft.FSharp.Collections.ListModule:ForAll[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):ubyte (FullOpts)
         -28 (-35.44 % of base) : 5569.dasm - Microsoft.FSharp.Collections.ListModule:Initialize[System.__Canon](int,Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -28 (-35.44 % of base) : 2968.dasm - Microsoft.FSharp.Collections.ListModule:Map[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)
         -28 (-35.44 % of base) : 2964.dasm - Microsoft.FSharp.Collections.ListModule:MapIndexed[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] (FullOpts)
         -28 (-35.44 % of base) : 7754.dasm - Microsoft.FSharp.Collections.ListModule: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)
         -28 (-35.44 % of base) : 6492.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -28 (-34.57 % of base) : 9195.dasm - FSharp.Compiler.ErrorLogger:IterateIdxD[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
         -28 (-33.33 % of base) : 8139.dasm - Microsoft.FSharp.Collections.MapModule:Find[System.__Canon,System.__Canon](System.__Canon,Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -28 (-33.33 % of base) : 6222.dasm - Microsoft.FSharp.Collections.MapModule:TryFind[System.__Canon,System.__Canon](System.__Canon,Microsoft.FSharp.Collections.FSharpMap`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)
        -171 (-33.08 % of base) : 743.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -66 (-32.20 % of base) : 5317.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -54 (-31.95 % of base) : 8601.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)
        -181 (-31.92 % of base) : 240.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)



osx arm64

Diffs are based on 78,929 contexts (41,462 MinOpts, 37,467 FullOpts).

MISSED contexts: base: 2,856 (2.27%), diff: 43,225 (34.38%)

Overall (-92,764 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,784 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 2,496,932 -18,464
benchmarks.run_tiered.osx.arm64.checked.mch 2,306,432 -17,176
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 2,206,820 -22,728
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,176 -17,236

MinOpts (-55,640 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 2,239,532 -16,808
benchmarks.run_tiered.osx.arm64.checked.mch 2,102,732 -16,288
libraries_tests.run.osx.arm64.Release.mch 2,194,452 -22,544

FullOpts (-37,124 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 1,051,360 -5,840
benchmarks.run_pgo.osx.arm64.checked.mch 257,400 -1,656
benchmarks.run_tiered.osx.arm64.checked.mch 203,700 -888
coreclr_tests.run.osx.arm64.checked.mch 188,056 -112
libraries.pmi.osx.arm64.checked.mch 1,221,828 -4,004
libraries_tests.run.osx.arm64.Release.mch 12,368 -184
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 1,036,932 -7,204
realworld.run.osx.arm64.checked.mch 1,633,076 -17,236

Example diffs

benchmarks.run.osx.arm64.checked.mch

-44 (-25.00%) : 2917.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%) : 7333.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

-44 (-24.44%) : 1504.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)

+4 (+4.55%) : 12295.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, #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_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, #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_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%) : 12387.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, #1 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, #1 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%) : 1546.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, #1 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, #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.__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, #1 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, #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.__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, #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.__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_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[] (FullOpts)
+; 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[] (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%) : 11145.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 (-31.03%) : 9119.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 (-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%) : 21396.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,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: @@ -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%) : 22892.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.73) ref -> x20 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> -; V01 TypeCtx [V01,T01] ( 5, 3.87) long -> x1 single-def -; V02 arg1 [V02,T03] ( 4, 3.73) byref -> x19 single-def -; V03 loc0 [V03,T00] ( 7, 5.91) ref -> x0 class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T04] ( 3, 2.73) ref -> x21 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache> +; V01 TypeCtx [V01,T00] ( 5, 4.45) long -> x19 single-def +; V02 arg1 [V02,T03] ( 4, 3.73) byref -> x20 single-def +; V03 loc0 [V03,T01] ( 7, 5.91) 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,T02] ( 4, 5.82) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T02] ( 4, 5.82) 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.91) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 4.07) 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.73, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03: ; bbWeight=0.73, 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.73 PerfScore 5.09 -G_M58319_IG04: ; bbWeight=0.58, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.58 PerfScore 0.58 -G_M58319_IG05: ; bbWeight=0.15, 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.15 PerfScore 0.44 -G_M58319_IG06: ; bbWeight=0.73, 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.73 PerfScore 5.09 -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.73 PerfScore 9.45 +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 25.70, 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 23.45, 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%) : 10550.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%) : 12483.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%) : 10836.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%) : 16436.dasm - ProtoBuf.Meta.RuntimeTypeModel:CreateDefaultModelInstance():ProtoBuf.Meta.RuntimeTypeModel (Tier0)

@@ -31,9 +31,11 @@ G_M27986_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #18
- 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, #1 LSL #32 ldr x0, [x0] @@ -67,7 +69,7 @@ G_M27986_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFARRAY
movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] @@ -81,7 +83,7 @@ G_M27986_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x20] // [V05 tmp1]

+8 (+6.06%) : 2696.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%) : 13939.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

-44 (-22.00%) : 19913.dasm - Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThenSystem.Canon,System.Canon:System.__Canon (FullOpts)

@@ -8,20 +8,15 @@ ; 0 inlinees with PGO data; 3 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,T04] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> -; V02 arg1 [V02,T05] ( 3, 3 ) ref -> x21 class-hnd single-def <System.IO.TextWriter> -; V03 arg2 [V03,T06] ( 3, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
+; V00 TypeCtx [V00,T01] ( 5, 5 ) long -> x19 single-def +; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]> +; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <System.IO.TextWriter> +; V03 arg2 [V03,T04] ( 3, 3 ) ref -> x22 class-hnd single-def <Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T00] ( 4, 8 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.PrintfModule+PrintFormatToTextWriterThen@1432[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,T10] ( 2, 4 ) long -> x0 "argument with side effect" -; V09 rat0 [V09,T08] ( 3, 4 ) long -> x0 "runtime lookup" -; V10 rat1 [V10,T02] ( 3, 5.60) long -> x0 "fgMakeTemp is creating a new local variable" -; V11 rat2 [V11,T09] ( 3, 4 ) long -> x0 "runtime lookup" -; V12 rat3 [V12,T03] ( 3, 5.60) long -> x0 "spilling expr" -; V13 rat4 [V13,T07] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T05] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -40,24 +35,14 @@ G_M44778_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x22, x3 ; gcrRegs +[x22] ;; size=40 bbWeight=1 PerfScore 7.50
-G_M44778_IG02: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ldr x0, [x19, #0x38] - ldr x0, [x0, #0x18] - cbz x0, G_M44778_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M44778_IG03: ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref - b G_M44778_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M44778_IG04: ; bbWeight=0.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M44778_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
; gcr arg pop 0
- ;; size=20 bbWeight=0.20 PerfScore 0.60 -G_M44778_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz - bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 mov x23, x0 @@ -76,27 +61,12 @@ G_M44778_IG05: ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x21] ; byrRegs -[x14]
- ldr x0, [x19, #0x38] - ldr x1, [x0, #0x10] - cmp x1, #32 - ble G_M44778_IG08 - ;; size=48 bbWeight=1 PerfScore 13.00 -G_M44778_IG06: ; bbWeight=0.80, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x20] - cbz x0, G_M44778_IG08 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M44778_IG07: ; bbWeight=0.64, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref - b G_M44778_IG09 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M44778_IG08: ; bbWeight=0.36, gcrefRegs=C00000 {x22 x23}, 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
; gcr arg pop 0
- ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M44778_IG09: ; bbWeight=1, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
mov x1, x23 ; gcrRegs +[x1] mov x2, x22 @@ -105,8 +75,8 @@ G_M44778_IG09: ; bbWeight=1, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 { movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ldr x3, [x3]
- ;; size=24 bbWeight=1 PerfScore 5.50 -G_M44778_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=96 bbWeight=1 PerfScore 17.00 +G_M44778_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -115,7 +85,7 @@ G_M44778_IG10: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 200, prolog size 40, PerfScore 45.32, instruction count 50, allocated bytes for code 200 (MethodHash=707d5115) for method Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
+; Total bytes of code 156, prolog size 40, PerfScore 30.50, instruction count 39, allocated bytes for code 156 (MethodHash=707d5115) for method Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
; ============================================================ Unwind Info: @@ -126,7 +96,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ 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)

-20 (-13.51%) : 19873.dasm - Program:InstantiatingStub1OtherSystem.__Canon:int (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 3.60) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 3.50) long -> x0 single-def
; V01 arg0 [V01,T01] ( 3, 2.50) ref -> x19 class-hnd single-def <System.__Canon> ;* V02 arg1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon> ;* V03 arg2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon> @@ -16,21 +16,19 @@ ;* V06 arg5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon> ;* V07 arg6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon> ;* V08 arg7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.__Canon>
-; V09 arg8 [V09,T05] ( 2, 1.50) int -> x20 single-def
+; V09 arg8 [V09,T03] ( 2, 1.50) int -> x20 single-def
;* V10 arg9 [V10 ] ( 0, 0 ) int -> zero-ref single-def ;* V11 arg10 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
-; V12 arg11 [V12,T07] ( 2, 1 ) int -> [fp+0x50] single-def
+; V12 arg11 [V12,T05] ( 2, 1 ) int -> [fp+0x50] single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp2 [V15,T08] ( 1, 0.50) byref -> [fp+0x40] single-def "field V11._reference (fldOffset=0x0)" P-INDEP -; V16 tmp3 [V16,T06] ( 2, 1.50) int -> x21 single-def "field V11._length (fldOffset=0x8)" P-INDEP -; V17 tmp4 [V17,T04] ( 2, 2 ) long -> x0 "argument with side effect" -; V18 rat0 [V18,T03] ( 3, 2 ) long -> x0 "runtime lookup" -; V19 rat1 [V19,T02] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V15 tmp2 [V15,T06] ( 1, 0.50) byref -> [fp+0x40] single-def "field V11._reference (fldOffset=0x0)" P-INDEP +; V16 tmp3 [V16,T04] ( 2, 1.50) int -> x21 single-def "field V11._length (fldOffset=0x8)" P-INDEP +; V17 tmp4 [V17,T02] ( 2, 2 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8
-G_M56834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M56834_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]! stp x19, x20, [sp, #0x18] str x21, [sp, #0x28] @@ -55,24 +53,13 @@ G_M56834_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M56834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56834_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
- ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cbz x2, G_M56834_IG07 - ;; size=12 bbWeight=0.50 PerfScore 3.50 -G_M56834_IG06: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov x0, x2 - b G_M56834_IG08 - ;; size=8 bbWeight=0.40 PerfScore 0.60 -G_M56834_IG07: ; bbWeight=0.10, gcrefRegs=80000 {x19}, 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.10 PerfScore 0.25 -G_M56834_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x4, [fp, #0x40] // [V15 tmp2] ; byrRegs +[x4] mov w5, w21 @@ -84,8 +71,8 @@ G_M56834_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x6, #0xD1FFAB1E LSL #16 movk x6, #1 LSL #32 ldr x6, [x6]
- ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M56834_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=52 bbWeight=0.50 PerfScore 6.25 +G_M56834_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 @@ -93,7 +80,7 @@ G_M56834_IG09: ; bbWeight=0.50, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 148, prolog size 32, PerfScore 25.85, instruction count 37, allocated bytes for code 148 (MethodHash=fbb821fd) for method Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)
+; Total bytes of code 128, prolog size 32, PerfScore 22.75, instruction count 32, allocated bytes for code 128 (MethodHash=fbb821fd) for method Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)
; ============================================================ Unwind Info: @@ -104,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)

-48 (-9.84%) : 271.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, #1 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, #1 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, #1 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.osx.arm64.checked.mch

-24 (-27.27%) : 10387.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%) : 12001.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%) : 10509.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%) : 6678.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%) : 7061.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%) : 7043.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%) : 136.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 (-31.03%) : 5905.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutableSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -19,28 +19,13 @@ G_M39678_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_M39678_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_M39678_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M39678_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_M39678_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M39678_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M39678_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_M39678_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_M39678_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M39678_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M39678_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=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=727d6501) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:AsImmutable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[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%) : 8901.dasm - Microsoft.CodeAnalysis.StaticCast1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray1[System.Canon]):System.Collections.Immutable.ImmutableArray`1[System.Canon] (Tier0)

@@ -19,28 +19,13 @@ G_M49898_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_M49898_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_M49898_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M49898_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_M49898_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M49898_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49898_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_M49898_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_M49898_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M49898_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M49898_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=a2493d15) for method Microsoft.CodeAnalysis.StaticCast`1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=a2493d15) for method Microsoft.CodeAnalysis.StaticCast`1[System.__Canon]:From[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[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)

+0 (0.00%) : 15339.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisResultBuilder:GetPendingAnalyzers(System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Nullable1[System.ValueTuple2[Microsoft.CodeAnalysis.Diagnostics.SourceOrAdditionalFile,ubyte]]):System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]:this (Tier0)

@@ -121,9 +121,11 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 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, #2 LSL #32 ldr x0, [x0] @@ -139,7 +141,7 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs +[x0] ; gcr arg pop 0 str x0, [fp, #0x18] // [V15 tmp8] @@ -148,9 +150,11 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 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, #2 LSL #32 ldr x0, [x0] @@ -173,7 +177,8 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #0xD1FFAB1E
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 ldr x15, [fp, #0x18] // [V15 tmp8] ; gcrRegs +[x15] @@ -182,6 +187,7 @@ G_M23760_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x14, #2 LSL #32 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
+ ; byrRegs -[x0]
ldr x0, [fp, #0x18] // [V15 tmp8] ; gcrRegs +[x0] str x0, [fp, #0x30] // [V13 tmp6]

+0 (0.00%) : 10696.dasm - Microsoft.CodeAnalysis.DocumentState+d__20:MoveNext():this (Tier0)

@@ -50,9 +50,11 @@ G_M38504_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 mov w1, #163
- 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, #2 LSL #32 ldr x0, [x0]

+0 (0.00%) : 12980.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:GetMatchingNodes(Microsoft.CodeAnalysis.ISyntaxHelper,Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases,Microsoft.CodeAnalysis.SyntaxTree,System.String,System.Func3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray1Microsoft.CodeAnalysis.SyntaxNode

@@ -129,9 +129,11 @@ G_M34356_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 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, #2 LSL #32 ldr x0, [x0] @@ -245,9 +247,11 @@ G_M34356_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 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, #2 LSL #32 ldr x0, [x0]

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-24 (-31.58%) : 2212.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%) : 2343.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, #2 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, #2 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, #2 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%) : 7397.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%) : 5914.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%) : 6542.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%) : 10142.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%) : 2391.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%) : 3235.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%) : 6638.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%) : 6635.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%) : 7800.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 146 112 5 29 -5,908 +68
benchmarks.run_pgo.osx.arm64.checked.mch 285 244 10 31 -18,552 +88
benchmarks.run_tiered.osx.arm64.checked.mch 255 227 2 26 -17,200 +24
coreclr_tests.run.osx.arm64.checked.mch 3 3 0 0 -112 +0
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 241 172 47 22 -4,852 +848
libraries_tests.run.osx.arm64.Release.mch 313 298 0 15 -22,728 +0
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 188 136 15 37 -7,572 +368
realworld.run.osx.arm64.checked.mch 358 323 14 21 -17,644 +408
1,789 1,515 93 181 -94,568 +1,804

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 5,141 3 5,138 503 (4.26%) 6,268 (53.09%)
benchmarks.run_pgo.osx.arm64.checked.mch 16,662 15,003 1,659 53 (0.22%) 6,794 (28.48%)
benchmarks.run_tiered.osx.arm64.checked.mch 15,026 13,361 1,665 83 (0.39%) 5,629 (26.74%)
coreclr_tests.run.osx.arm64.checked.mch 608 3 605 124 (1.85%) 5,692 (85.01%)
libraries.crossgen2.osx.arm64.checked.mch 2,218 0 2,218 0 (0.00%) 1,317 (33.50%)
libraries.pmi.osx.arm64.checked.mch 11,774 0 11,774 170 (1.04%) 4,139 (25.37%)
libraries_tests.run.osx.arm64.Release.mch 13,183 13,091 92 15 (0.08%) 4,296 (24.03%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 5,329 0 5,329 921 (9.24%) 4,241 (42.55%)
realworld.run.osx.arm64.checked.mch 8,988 1 8,987 987 (6.93%) 4,849 (34.07%)
78,929 41,462 37,467 2,856 (2.27%) 43,225 (34.38%)

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: 1051784 (overridden on cmd)
Total bytes of diff: 1045944 (overridden on cmd)
Total bytes of delta: -5840 (-0.56 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 6115.dasm (3.83 % of base)
          20 : 1546.dasm (6.25 % of base)
           4 : 12295.dasm (4.55 % of base)
           4 : 12387.dasm (5.56 % of base)
           4 : 1082.dasm (4.55 % of base)

Top file improvements (bytes):
        -328 : 3639.dasm (-23.98 % of base)
        -212 : 233.dasm (-30.99 % of base)
        -212 : 730.dasm (-33.12 % of base)
        -208 : 7002.dasm (-15.76 % of base)
        -184 : 688.dasm (-26.14 % of base)
        -184 : 237.dasm (-24.34 % of base)
        -156 : 5768.dasm (-29.32 % of base)
        -144 : 1773.dasm (-15.06 % of base)
        -136 : 2386.dasm (-30.63 % of base)
        -132 : 5583.dasm (-19.30 % of base)
        -128 : 1844.dasm (-27.12 % of base)
        -128 : 7206.dasm (-25.81 % of base)
        -128 : 626.dasm (-18.71 % of base)
        -100 : 6290.dasm (-24.04 % of base)
        -100 : 7691.dasm (-20.49 % of base)
        -100 : 202.dasm (-19.84 % of base)
         -92 : 2312.dasm (-22.12 % of base)
         -76 : 4094.dasm (-18.27 % of base)
         -72 : 236.dasm (-24.00 % of base)
         -72 : 7103.dasm (-23.38 % of base)

48 total files with Code Size differences (43 improved, 5 regressed), 25 unchanged.

Top method regressions (bytes):
          36 (3.83 % of base) : 6115.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          20 (6.25 % of base) : 1546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (4.55 % of base) : 1082.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (5.56 % of base) : 12387.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 12295.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 3639.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-15.76 % of base) : 7002.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) : 688.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) : 5768.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) : 1773.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) : 2386.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 5583.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) : 1844.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) : 7206.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 626.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 7691.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 6290.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) : 2312.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
         -76 (-18.27 % of base) : 4094.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) : 11333.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)
         -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)

Top method regressions (percentages):
          20 (6.25 % of base) : 1546.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (5.56 % of base) : 12387.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 1082.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (4.55 % of base) : 12295.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
          36 (3.83 % of base) : 6115.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 730.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) : 11170.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 2386.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 5768.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) : 1844.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) : 7606.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 688.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) : 7206.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 901.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) : 2917.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-24.44 % of base) : 7333.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 1504.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) : 6290.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) : 3639.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) : 3147.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -72 (-23.38 % of base) : 7103.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) : 6032.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: 2496932 (overridden on cmd)
Total bytes of diff: 2478468 (overridden on cmd)
Total bytes of delta: -18464 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 10550.dasm (10.53 % of base)
           8 : 2129.dasm (5.88 % of base)
           8 : 21396.dasm (6.06 % of base)
           8 : 21683.dasm (6.06 % of base)
           8 : 22892.dasm (6.06 % of base)
           8 : 6941.dasm (6.06 % of base)
           8 : 9897.dasm (6.06 % of base)
           8 : 10012.dasm (6.06 % of base)
           8 : 17149.dasm (6.06 % of base)
           8 : 20488.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 4420.dasm (-43.85 % of base)
        -428 : 624.dasm (-41.96 % of base)
        -372 : 4382.dasm (-37.35 % of base)
        -372 : 630.dasm (-35.36 % of base)
        -332 : 20842.dasm (-28.92 % of base)
        -316 : 8948.dasm (-37.44 % of base)
        -316 : 9520.dasm (-38.54 % of base)
        -296 : 11531.dasm (-38.14 % of base)
        -260 : 11156.dasm (-40.37 % of base)
        -260 : 4285.dasm (-27.66 % of base)
        -260 : 7268.dasm (-35.71 % of base)
        -260 : 9555.dasm (-39.88 % of base)
        -240 : 266.dasm (-32.97 % of base)
        -212 : 22492.dasm (-33.12 % of base)
        -212 : 7321.dasm (-33.12 % of base)
        -204 : 552.dasm (-30.18 % of base)
        -204 : 7593.dasm (-23.50 % of base)
        -204 : 8891.dasm (-32.28 % of base)
        -204 : 9539.dasm (-32.69 % of base)
        -204 : 9545.dasm (-30.00 % of base)

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

Top method regressions (bytes):
          16 (10.53 % of base) : 10550.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (5.88 % of base) : 2129.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21683.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22892.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6941.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9897.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 10012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17149.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 20488.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) : 4420.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 (-37.35 % of base) : 4382.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) : 20842.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) : 9520.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) : 8948.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-38.14 % of base) : 11531.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) : 9555.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) : 11156.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) : 7268.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 4285.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 266.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 22492.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 7321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-32.28 % of base) : 8891.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 9545.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-23.50 % of base) : 7593.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -204 (-32.69 % of base) : 9539.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) : 10550.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 21396.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 21683.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22892.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6941.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 9897.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 10012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 17149.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 20488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (5.88 % of base) : 2129.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) : 4420.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) : 22040.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 11156.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) : 9555.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) : 17060.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-38.98 % of base) : 8199.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -316 (-38.54 % of base) : 9520.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) : 8767.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-38.33 % of base) : 7976.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 6521.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -296 (-38.14 % of base) : 11531.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) : 8948.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -372 (-37.35 % of base) : 4382.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) : 4406.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) : 9519.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) : 11280.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 7639.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) : 9341.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) : 7637.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.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: 2306432 (overridden on cmd)
Total bytes of diff: 2289256 (overridden on cmd)
Total bytes of delta: -17176 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



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

Top file improvements (bytes):
        -428 : 624.dasm (-41.96 % of base)
        -428 : 1897.dasm (-43.85 % of base)
        -372 : 630.dasm (-35.36 % of base)
        -372 : 1824.dasm (-36.19 % of base)
        -316 : 15981.dasm (-37.44 % of base)
        -316 : 3703.dasm (-38.54 % of base)
        -296 : 11208.dasm (-39.78 % of base)
        -260 : 1687.dasm (-27.66 % of base)
        -260 : 3349.dasm (-35.71 % of base)
        -260 : 10847.dasm (-40.37 % of base)
        -260 : 4245.dasm (-39.88 % of base)
        -240 : 265.dasm (-32.97 % of base)
        -212 : 3366.dasm (-33.12 % of base)
        -204 : 17899.dasm (-25.25 % of base)
        -204 : 4249.dasm (-32.69 % of base)
        -204 : 9155.dasm (-23.50 % of base)
        -204 : 14699.dasm (-30.00 % of base)
        -204 : 17052.dasm (-32.28 % of base)
        -204 : 552.dasm (-30.18 % of base)
        -184 : 1881.dasm (-30.87 % of base)

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

Top method regressions (bytes):
          16 (10.53 % of base) : 13939.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 2696.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) : 1897.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) : 1824.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) : 3703.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) : 15981.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 11208.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) : 4245.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) : 10847.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) : 3349.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1687.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) : 3366.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.25 % of base) : 17899.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-32.28 % of base) : 17052.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 14699.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-23.50 % of base) : 9155.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier0)
        -204 (-32.69 % of base) : 4249.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) : 1881.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) : 13939.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
           8 (6.06 % of base) : 2696.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) : 1897.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) : 18603.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 10847.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) : 4245.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) : 11208.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) : 3806.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-38.98 % of base) : 16537.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -316 (-38.54 % of base) : 3703.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) : 16935.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-38.33 % of base) : 13455.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 4866.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -316 (-37.44 % of base) : 15981.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -148 (-37.00 % of base) : 1883.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) : 3702.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) : 10961.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 9372.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) : 12677.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) : 5231.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) : 1824.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: 188056 (overridden on cmd)
Total bytes of diff: 187944 (overridden on cmd)
Total bytes of delta: -112 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -48 : 271.dasm (-9.84 % of base)
         -44 : 19913.dasm (-22.00 % of base)
         -20 : 19873.dasm (-13.51 % of base)

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

Top method improvements (bytes):
         -48 (-9.84 % of base) : 271.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 (-22.00 % of base) : 19913.dasm - Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -20 (-13.51 % of base) : 19873.dasm - Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)

Top method improvements (percentages):
         -44 (-22.00 % of base) : 19913.dasm - Microsoft.FSharp.Core.PrintfModule:PrintFormatToTextWriterThen[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]):System.__Canon (FullOpts)
         -20 (-13.51 % of base) : 19873.dasm - Program:InstantiatingStub1Other[System.__Canon](System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int,int,System.Span`1[int],int):int (FullOpts)
         -48 (-9.84 % of base) : 271.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)

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


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: 1221828 (overridden on cmd)
Total bytes of diff: 1217824 (overridden on cmd)
Total bytes of delta: -4004 (-0.33 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          80 : 11820.dasm (29.85 % of base)
          68 : 11832.dasm (27.87 % of base)
          68 : 7037.dasm (35.42 % of base)
          68 : 7057.dasm (35.42 % of base)
          60 : 7041.dasm (25.86 % of base)
          60 : 7059.dasm (25.86 % of base)
          52 : 7035.dasm (39.39 % of base)
          52 : 7055.dasm (39.39 % of base)
          40 : 7043.dasm (17.24 % of base)
          32 : 6678.dasm (11.76 % of base)
          24 : 8522.dasm (5.66 % of base)
          24 : 6676.dasm (10.71 % of base)
          24 : 7061.dasm (17.14 % of base)
          24 : 8515.dasm (5.41 % of base)
          20 : 6680.dasm (6.58 % of base)
          16 : 11786.dasm (9.76 % of base)
           8 : 8508.dasm (2.17 % of base)
           8 : 7039.dasm (5.56 % of base)
           8 : 8501.dasm (2.13 % of base)
           4 : 4093.dasm (5.56 % of base)

Top file improvements (bytes):
        -108 : 11782.dasm (-25.47 % of base)
        -108 : 11980.dasm (-25.47 % of base)
         -80 : 7750.dasm (-23.81 % of base)
         -72 : 11874.dasm (-13.95 % of base)
         -72 : 11904.dasm (-13.95 % of base)
         -72 : 11855.dasm (-13.95 % of base)
         -72 : 11884.dasm (-13.95 % of base)
         -72 : 11894.dasm (-13.95 % of base)
         -72 : 7092.dasm (-19.35 % of base)
         -68 : 11994.dasm (-19.54 % of base)
         -64 : 1415.dasm (-11.03 % of base)
         -60 : 11880.dasm (-14.15 % of base)
         -60 : 11890.dasm (-14.15 % of base)
         -60 : 11892.dasm (-14.15 % of base)
         -60 : 11902.dasm (-14.15 % of base)
         -60 : 93.dasm (-14.15 % of base)
         -60 : 11863.dasm (-14.15 % of base)
         -60 : 11882.dasm (-14.15 % of base)
         -60 : 11900.dasm (-14.15 % of base)
         -60 : 11910.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) : 11820.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) : 7057.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7037.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
          68 (27.87 % of base) : 11832.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7059.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7041.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7055.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7035.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          40 (17.24 % of base) : 7043.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
          32 (11.76 % of base) : 6678.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
          24 (10.71 % of base) : 6676.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
          24 (17.14 % of base) : 7061.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          24 (5.41 % of base) : 8515.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          24 (5.66 % of base) : 8522.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          20 (6.58 % of base) : 6680.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
          16 (9.76 % of base) : 11786.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) : 7039.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
           8 (2.13 % of base) : 8501.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           8 (2.17 % of base) : 8508.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           4 (5.56 % of base) : 4093.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)

Top method improvements (bytes):
        -108 (-25.47 % of base) : 11782.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) : 11980.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) : 7750.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
         -72 (-19.35 % of base) : 7092.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) : 11855.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) : 11874.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) : 11884.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) : 11894.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) : 11904.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) : 11994.dasm - System.Numerics.Vector:Sum[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
         -64 (-11.03 % of base) : 1415.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) : 11863.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) : 11880.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) : 11882.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) : 11890.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) : 11892.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) : 11900.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) : 11902.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) : 11910.dasm - System.Numerics.Vector:LessThanOrEqualAll[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) : 7055.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
          52 (39.39 % of base) : 7035.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7057.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
          68 (35.42 % of base) : 7037.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
          80 (29.85 % of base) : 11820.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 (27.87 % of base) : 11832.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7059.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
          60 (25.86 % of base) : 7041.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
          40 (17.24 % of base) : 7043.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
          24 (17.14 % of base) : 7061.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          32 (11.76 % of base) : 6678.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
          24 (10.71 % of base) : 6676.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
          16 (9.76 % of base) : 11786.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) : 6680.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
          24 (5.66 % of base) : 8522.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
           4 (5.56 % of base) : 4093.dasm - System.Convert:ToBoolean(System.Object):ubyte (FullOpts)
           4 (5.56 % of base) : 4143.dasm - System.Convert:ToByte(System.Object):ubyte (FullOpts)
           4 (5.56 % of base) : 4109.dasm - System.Convert:ToChar(System.Object):ushort (FullOpts)
           4 (5.56 % of base) : 4284.dasm - System.Convert:ToDouble(System.Object):double (FullOpts)
           4 (5.56 % of base) : 4160.dasm - System.Convert:ToInt16(System.Object):short (FullOpts)

Top method improvements (percentages):
         -24 (-27.27 % of base) : 10387.dasm - System.Tuple:Create[System.__Canon](System.__Canon):System.Tuple`1[System.__Canon] (FullOpts)
         -44 (-26.19 % of base) : 12001.dasm - System.Numerics.Vector:ToScalar[System.__Canon](System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
        -108 (-25.47 % of base) : 11782.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) : 11980.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) : 11920.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -24 (-25.00 % of base) : 10394.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) : 10509.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) : 1209.dasm - System.Array:AsReadOnly[System.__Canon](System.__Canon[]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -24 (-24.00 % of base) : 2281.dasm - System.GC:AllocateArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
         -24 (-24.00 % of base) : 11788.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) : 11351.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -80 (-23.81 % of base) : 7750.dasm - System.Random:GetItems[System.__Canon](System.ReadOnlySpan`1[System.__Canon],int):System.__Canon[]:this (FullOpts)
         -20 (-22.73 % of base) : 11914.dasm - System.Numerics.Vector:Load[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 11918.dasm - System.Numerics.Vector:LoadAlignedNonTemporal[System.__Canon](ulong):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 10507.dasm - System.TupleExtensions:ToTuple[System.__Canon](System.ValueTuple`1[System.__Canon]):System.Tuple`1[System.__Canon] (FullOpts)
         -20 (-22.73 % of base) : 10503.dasm - System.TupleExtensions:ToValueTuple[System.__Canon](System.Tuple`1[System.__Canon]):System.ValueTuple`1[System.__Canon] (FullOpts)
         -52 (-22.41 % of base) : 7106.dasm - System.MemoryExtensions:CommonPrefixLength[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):int (FullOpts)
         -52 (-22.41 % of base) : 7065.dasm - System.MemoryExtensions:Overlaps[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (FullOpts)
         -44 (-21.57 % of base) : 7063.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts)
         -24 (-21.43 % of base) : 11922.dasm - System.Numerics.Vector:LoadUnsafe[System.__Canon](byref,ulong):System.Numerics.Vector`1[System.__Canon] (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: 2206820 (overridden on cmd)
Total bytes of diff: 2184092 (overridden on cmd)
Total bytes of delta: -22728 (-1.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -428 : 17.dasm (-41.96 % of base)
        -428 : 22.dasm (-43.85 % of base)
        -372 : 112.dasm (-36.19 % of base)
        -372 : 946.dasm (-35.36 % of base)
        -296 : 1549.dasm (-39.78 % of base)
        -260 : 118.dasm (-40.37 % of base)
        -260 : 14699.dasm (-39.88 % of base)
        -260 : 2065.dasm (-43.92 % of base)
        -260 : 4524.dasm (-40.88 % of base)
        -260 : 974.dasm (-27.66 % of base)
        -240 : 16347.dasm (-37.27 % of base)
        -240 : 18149.dasm (-27.65 % of base)
        -240 : 6563.dasm (-32.97 % of base)
        -204 : 3903.dasm (-34.46 % of base)
        -204 : 11410.dasm (-17.65 % of base)
        -204 : 11110.dasm (-30.00 % of base)
        -204 : 1189.dasm (-30.18 % of base)
        -204 : 12618.dasm (-19.10 % of base)
        -200 : 18756.dasm (-36.50 % of base)
        -184 : 989.dasm (-31.72 % of base)

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

Top method improvements (bytes):
        -428 (-41.96 % of base) : 17.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) : 22.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-35.36 % of base) : 946.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 112.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)
        -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.88 % of base) : 4524.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 118.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) : 974.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -260 (-39.88 % of base) : 14699.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
        -260 (-43.92 % of base) : 2065.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -240 (-27.65 % of base) : 18149.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 (Tier0)
        -240 (-37.27 % of base) : 16347.dasm - Microsoft.CodeAnalysis.UnionCollection`1[System.__Canon]:Create[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.ICollection`1[System.__Canon] (Tier0)
        -240 (-32.97 % of base) : 6563.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
        -204 (-19.10 % of base) : 12618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
        -204 (-17.65 % of base) : 11410.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 (Tier0)
        -204 (-30.00 % of base) : 11110.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
        -204 (-34.46 % of base) : 3903.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-30.18 % of base) : 1189.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -200 (-36.50 % of base) : 18756.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)
        -184 (-31.72 % of base) : 989.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 improvements (percentages):
        -260 (-43.92 % of base) : 2065.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -428 (-43.85 % of base) : 22.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 17.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-41.57 % of base) : 9814.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
        -148 (-41.57 % of base) : 7720.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-41.11 % of base) : 6491.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 12097.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 4391.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]] (Tier0)
        -260 (-40.88 % of base) : 4524.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 118.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -148 (-40.22 % of base) : 9872.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-40.22 % of base) : 7350.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 (Tier0)
        -260 (-39.88 % of base) : 14699.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
        -148 (-39.78 % of base) : 12645.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (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) : 3.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-39.66 % of base) : 5715.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
         -92 (-39.66 % of base) : 13855.dasm - Roslyn.Utilities.EnumerableExtensions:Transpose[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IList`1[System.__Canon] (Tier0)
         -92 (-39.66 % of base) : 15970.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastArray[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
         -92 (-39.66 % of base) : 9990.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] (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: 1036932 (overridden on cmd)
Total bytes of diff: 1029728 (overridden on cmd)
Total bytes of delta: -7204 (-0.69 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6731.dasm (8.99 % of base)
          64 : 4235.dasm (5.39 % of base)
          48 : 7397.dasm (16.67 % of base)
          28 : 10108.dasm (9.21 % of base)
          24 : 6542.dasm (31.58 % of base)
          24 : 3112.dasm (6.59 % of base)
          24 : 5914.dasm (23.08 % of base)
          20 : 5969.dasm (16.13 % of base)
          20 : 69.dasm (6.25 % of base)
          20 : 7645.dasm (4.39 % of base)
          12 : 3115.dasm (1.01 % of base)
           4 : 4724.dasm (3.45 % of base)
           4 : 8099.dasm (4.35 % of base)
           4 : 8100.dasm (1.89 % of base)
           4 : 5966.dasm (3.03 % of base)

Top file improvements (bytes):
        -328 : 994.dasm (-22.47 % of base)
        -328 : 3270.dasm (-23.98 % of base)
        -228 : 3191.dasm (-7.52 % of base)
        -212 : 13.dasm (-33.12 % of base)
        -212 : 3626.dasm (-12.62 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -200 : 3277.dasm (-19.69 % of base)
        -192 : 9095.dasm (-6.81 % of base)
        -184 : 481.dasm (-24.34 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -176 : 3519.dasm (-27.85 % of base)
        -160 : 751.dasm (-17.62 % of base)
        -136 : 6537.dasm (-18.68 % of base)
        -136 : 2286.dasm (-30.63 % of base)
        -132 : 512.dasm (-19.76 % of base)
        -128 : 860.dasm (-27.12 % of base)
        -128 : 9155.dasm (-29.91 % of base)
        -128 : 494.dasm (-18.71 % of base)
        -100 : 2187.dasm (-24.04 % of base)
        -100 : 634.dasm (-21.93 % of base)

63 total files with Code Size differences (48 improved, 15 regressed), 22 unchanged.

Top method regressions (bytes):
          68 (8.99 % of base) : 6731.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) : 4235.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) : 7397.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) : 10108.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) : 5914.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) : 6542.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) : 3112.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) : 7645.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) : 5969.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)
          12 (1.01 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
           4 (1.89 % of base) : 8100.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (4.35 % of base) : 8099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.03 % of base) : 5966.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) : 4724.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)

Top method improvements (bytes):
        -328 (-22.47 % of base) : 994.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) : 3270.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 (-7.52 % of base) : 3191.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -212 (-12.62 % of base) : 3626.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) : 3277.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)
        -192 (-6.81 % of base) : 9095.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (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) : 3519.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 751.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)
        -136 (-18.68 % of base) : 6537.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) : 2286.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 (-18.71 % of base) : 494.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -128 (-29.91 % of base) : 9155.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[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)

Top method regressions (percentages):
          24 (31.58 % of base) : 6542.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) : 5914.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) : 7397.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) : 5969.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) : 10108.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) : 6731.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) : 3112.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) : 4235.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) : 7645.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) : 8099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal.GetITypeSymbol():Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.45 % of base) : 4724.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.03 % of base) : 5966.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) : 8100.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
          12 (1.01 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2212.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) : 2286.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 6498.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) : 9155.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -176 (-27.85 % of base) : 3519.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) : 2343.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) : 5949.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) : 3378.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) : 3356.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) : 4374.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) : 2398.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.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: 1633176 (overridden on cmd)
Total bytes of diff: 1615940 (overridden on cmd)
Total bytes of delta: -17236 (-1.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 6961.dasm (12.55 % of base)
          48 : 6614.dasm (10.62 % of base)
          48 : 6625.dasm (10.62 % of base)
          48 : 6635.dasm (10.81 % of base)
          48 : 6638.dasm (10.62 % of base)
          20 : 13185.dasm (6.10 % of base)
          20 : 7800.dasm (13.51 % of base)
          16 : 6562.dasm (8.51 % of base)
           8 : 9476.dasm (5.88 % of base)
           8 : 2154.dasm (4.26 % of base)
           8 : 8704.dasm (3.03 % of base)
           4 : 12204.dasm (5.56 % of base)
           4 : 2389.dasm (1.59 % of base)
           4 : 5567.dasm (0.98 % of base)

Top file improvements (bytes):
        -328 : 9583.dasm (-29.29 % of base)
        -328 : 3346.dasm (-24.33 % of base)
        -228 : 8058.dasm (-28.22 % of base)
        -212 : 233.dasm (-30.99 % of base)
        -212 : 730.dasm (-33.12 % of base)
        -208 : 6797.dasm (-23.01 % of base)
        -208 : 7748.dasm (-23.42 % of base)
        -200 : 5885.dasm (-11.79 % of base)
        -188 : 13022.dasm (-23.86 % of base)
        -184 : 237.dasm (-24.34 % of base)
        -184 : 688.dasm (-26.14 % of base)
        -172 : 8657.dasm (-22.63 % of base)
        -172 : 8901.dasm (-18.53 % of base)
        -164 : 5683.dasm (-22.04 % of base)
        -160 : 13087.dasm (-17.62 % of base)
        -152 : 9584.dasm (-14.02 % of base)
        -144 : 8457.dasm (-18.09 % of base)
        -144 : 6757.dasm (-20.81 % of base)
        -144 : 7897.dasm (-24.32 % of base)
        -144 : 8630.dasm (-20.11 % of base)

70 total files with Code Size differences (56 improved, 14 regressed), 21 unchanged.

Top method regressions (bytes):
         124 (12.55 % of base) : 6961.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) : 6635.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) : 6638.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) : 6625.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) : 6614.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) : 7800.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) : 13185.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) : 6562.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) : 8704.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) : 2154.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) : 9476.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) : 5567.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) : 2389.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) : 12204.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 9583.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) : 3346.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) : 8058.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 6797.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) : 7748.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) : 5885.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) : 13022.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) : 688.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) : 8657.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) : 8901.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) : 5683.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) : 13087.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) : 9584.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) : 8457.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) : 7897.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) : 6757.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) : 8630.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) : 7800.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) : 6961.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) : 6635.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) : 6638.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) : 6625.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) : 6614.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) : 6562.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) : 13185.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) : 9476.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) : 12204.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
           8 (4.26 % of base) : 2154.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) : 8704.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) : 2389.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) : 5567.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) : 9047.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) : 730.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 8708.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 10142.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) : 8978.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) : 5585.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) : 5726.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) : 6394.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) : 7613.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) : 9583.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) : 7856.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) : 8058.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) : 5577.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) : 5982.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 10435.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) : 8884.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) : 4684.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) : 8701.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) : 5724.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 89,877 contexts (39,512 MinOpts, 50,365 FullOpts).

MISSED contexts: base: 3,991 (2.85%), diff: 46,273 (33.03%)

Overall (-90,944 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,828 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 2,287,604 -19,696
benchmarks.run_tiered.windows.arm64.checked.mch 2,227,248 -17,092
coreclr_tests.run.windows.arm64.checked.mch 561,672 -612
libraries.pmi.windows.arm64.checked.mch 1,150,104 -732
libraries_tests.run.windows.arm64.Release.mch 2,258,308 -22,440
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,480 -17,164

MinOpts (-53,200 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 1,817,936 -15,984
benchmarks.run_tiered.windows.arm64.checked.mch 2,005,868 -15,300
coreclr_tests.run.windows.arm64.checked.mch 388,052 -172
libraries_tests.run.windows.arm64.Release.mch 2,220,016 -21,744

FullOpts (-37,744 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 850,452 -5,476
benchmarks.run_pgo.windows.arm64.checked.mch 469,668 -3,712
benchmarks.run_tiered.windows.arm64.checked.mch 221,380 -1,792
coreclr_tests.run.windows.arm64.checked.mch 173,620 -440
libraries.pmi.windows.arm64.checked.mch 1,150,032 -732
libraries_tests.run.windows.arm64.Release.mch 38,292 -696
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,051,504 -7,732
realworld.run.windows.arm64.checked.mch 1,662,380 -17,164

Example diffs

benchmarks.run.windows.arm64.checked.mch

-44 (-25.00%) : 1942.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%) : 6106.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

-44 (-24.44%) : 4507.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)

+36 (+3.83%) : 7215.dasm - System.Collections.PerfFrozenDictionaryString:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

@@ -8,60 +8,61 @@ ; 0 inlinees with PGO data; 28 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 5, 8 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T19] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V05 tmp4 [V05,T09] ( 6, 3 ) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V06 tmp5 [V06,T15] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V07 tmp6 [V07,T10] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> -; V08 tmp7 [V08,T06] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> -; V09 tmp8 [V09,T28] ( 2, 1 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V10 tmp9 [V10,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V13 tmp12 [V13,T02] ( 6, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]>
+; V02 tmp1 [V02,T01] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <<unknown class>> +; V03 tmp2 [V03,T21] ( 3, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V04 tmp3 [V04,T06] ( 7, 4.50) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V05 tmp4 [V05,T17] ( 4, 2 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V06 tmp5 [V06,T12] ( 3, 3 ) ref -> x2 class-hnd "Inlining Arg" <<unknown class>> +; V07 tmp6 [V07,T07] ( 4, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>> +; V08 tmp7 [V08,T30] ( 2, 1 ) ref -> x22 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V09 tmp8 [V09,T00] ( 11, 11 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V12 tmp11 [V12,T03] ( 6, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
;* V14 tmp13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]>
-;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V16 tmp15 [V16,T24] ( 3, 1.50) ref -> x22 class-hnd "Inline return value spill temp" <<unknown class>> -; V17 tmp16 [V17,T20] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -; V18 tmp17 [V18,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> -; V19 tmp18 [V19,T22] ( 2, 2 ) int -> x19 "Inlining Arg" -;* V20 tmp19 [V20 ] ( 0, 0 ) ref -> zero-ref single-def -; V21 tmp20 [V21,T29] ( 2, 1 ) ref -> x15 -;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V23 tmp22 [V23 ] ( 0, 0 ) ref -> zero-ref single-def -; V24 tmp23 [V24,T16] ( 4, 2 ) ref -> x15 -;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> -;* V30 tmp29 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> -;* V31 tmp30 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V33 tmp32 [V33,T12] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V34 tmp33 [V34,T23] ( 2, 2 ) int -> x21 "Inlining Arg" -; V35 tmp34 [V35,T03] ( 5, 5 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V36 tmp35 [V36,T25] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> -; V37 tmp36 [V37,T11] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> -;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-INDEP -;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._comparers (fldOffset=0x8)" P-INDEP -;* V40 tmp39 [V40 ] ( 0, 0 ) ref -> zero-ref "field V28._root (fldOffset=0x0)" P-DEP -;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V28._countAdjustment (fldOffset=0x8)" P-DEP -; V42 tmp41 [V42,T08] ( 7, 3.50) ref -> x19 "field V29._root (fldOffset=0x0)" P-INDEP -; V43 tmp42 [V43,T32] ( 2, 1 ) int -> x1 "field V29._countAdjustment (fldOffset=0x8)" P-INDEP -; V44 tmp43 [V44,T30] ( 2, 1 ) ref -> x2 single-def "field V30._root (fldOffset=0x0)" P-INDEP -; V45 tmp44 [V45,T31] ( 2, 1 ) ref -> x3 single-def "field V30._comparers (fldOffset=0x8)" P-INDEP -; V46 tmp45 [V46,T21] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V47 cse0 [V47,T26] ( 3, 1.50) ref -> x3 "CSE - moderate" -; V48 cse1 [V48,T13] ( 5, 2.50) ref -> x22 "CSE - aggressive" -; V49 cse2 [V49,T14] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" -; V50 cse3 [V50,T17] ( 4, 2 ) ref -> x1 "CSE - moderate" -; V51 cse4 [V51,T27] ( 3, 1.50) int -> x0 "CSE - moderate" -; V52 cse5 [V52,T18] ( 4, 2 ) long -> x21 "CSE - moderate" -; V53 cse6 [V53,T05] ( 7, 4.50) long -> x20 "CSE - aggressive"
+; V15 tmp14 [V15,T26] ( 3, 1.50) ref -> x21 class-hnd "Inline return value spill temp" <<unknown class>> +; V16 tmp15 [V16,T22] ( 2, 2 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +; V17 tmp16 [V17,T08] ( 4, 4 ) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]> +; V18 tmp17 [V18,T24] ( 2, 2 ) int -> x20 "Inlining Arg" +;* V19 tmp18 [V19 ] ( 0, 0 ) ref -> zero-ref single-def +; V20 tmp19 [V20,T31] ( 2, 1 ) ref -> x15 +;* V21 tmp20 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V22 tmp21 [V22 ] ( 0, 0 ) ref -> zero-ref single-def +; V23 tmp22 [V23,T18] ( 4, 2 ) ref -> x15 +;* V24 tmp23 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V25 tmp24 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +;* V26 tmp25 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V27 tmp26 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V28 tmp27 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.String,System.String]> +;* V29 tmp28 [V29 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.String,System.String]> +;* V30 tmp29 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V31 tmp30 [V31 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V32 tmp31 [V32,T14] ( 5, 2.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V33 tmp32 [V33,T25] ( 2, 2 ) int -> x20 "Inlining Arg" +; V34 tmp33 [V34,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V35 tmp34 [V35,T27] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]> +; V36 tmp35 [V36,T13] ( 3, 3 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.__Canon,System.__Canon]> +;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref "field V26._root (fldOffset=0x0)" P-INDEP +;* V38 tmp37 [V38 ] ( 0, 0 ) ref -> zero-ref "field V26._comparers (fldOffset=0x8)" P-INDEP +;* V39 tmp38 [V39 ] ( 0, 0 ) ref -> zero-ref "field V27._root (fldOffset=0x0)" P-DEP +;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V27._countAdjustment (fldOffset=0x8)" P-DEP +; V41 tmp40 [V41,T10] ( 7, 3.50) ref -> x19 "field V28._root (fldOffset=0x0)" P-INDEP +; V42 tmp41 [V42,T34] ( 2, 1 ) int -> x1 "field V28._countAdjustment (fldOffset=0x8)" P-INDEP +; V43 tmp42 [V43,T32] ( 2, 1 ) ref -> x2 single-def "field V29._root (fldOffset=0x0)" P-INDEP +; V44 tmp43 [V44,T33] ( 2, 1 ) ref -> x3 single-def "field V29._comparers (fldOffset=0x8)" P-INDEP +; V45 tmp44 [V45,T23] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V46 cse0 [V46,T28] ( 3, 1.50) ref -> x3 "CSE - moderate" +; V47 cse1 [V47,T15] ( 5, 2.50) ref -> x21 "CSE - aggressive" +; V48 cse2 [V48,T16] ( 5, 2.50) ref -> x2 multi-def "CSE - moderate" +; V49 cse3 [V49,T19] ( 4, 2 ) ref -> x1 "CSE - moderate" +; V50 cse4 [V50,T29] ( 3, 1.50) int -> x0 "CSE - moderate" +; V51 cse5 [V51,T20] ( 4, 2 ) long -> x19 "CSE - moderate" +; V52 cse6 [V52,T11] ( 7, 3.50) long -> registers multi-def "CSE - moderate" +; V53 rat0 [V53,T02] ( 4, 6.50) ref -> x20 "replacement local" +; V54 rat1 [V54,T09] ( 2, 4 ) long -> x1 "CSE for expectedClsNode"
; ; Lcl frame size = 0 @@ -76,39 +77,49 @@ G_M57422_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs +[x0] ldr x19, [x0, #0x18] ; gcrRegs +[x19]
- cbz x19, G_M57422_IG15 - ldr x1, [x19] - movz x20, #0xD1FFAB1E - movk x20, #0xD1FFAB1E LSL #16 - movk x20, #0xD1FFAB1E LSL #32 - cmp x1, x20 - bne G_M57422_IG13 - ;; size=32 bbWeight=1 PerfScore 10.00 -G_M57422_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - ldr x22, [x21] - ; gcrRegs +[x22] - mov x2, x22
+ cbz x19, G_M57422_IG17 + mov x20, x19 + ; gcrRegs +[x20] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x2, [x20] + cmp x2, x1 + beq G_M57422_IG04 + ;; size=36 bbWeight=1 PerfScore 10.50 +G_M57422_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0 x20] + mov x20, xzr + ; gcrRegs +[x20] + ;; size=4 bbWeight=0.25 PerfScore 0.12 +G_M57422_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M57422_IG15 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M57422_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19] + movz x19, #0xD1FFAB1E + movk x19, #0xD1FFAB1E LSL #16 + movk x19, #0xD1FFAB1E LSL #32 + ldr x21, [x19] + ; gcrRegs +[x21] + mov x2, x21
; gcrRegs +[x2]
- mov x0, x22
+ mov x0, x21
; gcrRegs +[x0]
- ldr x1, [x19, #0x10]
+ ldr x1, [x20, #0x10]
; gcrRegs +[x1] ldr x3, [x1, #0x08] ; gcrRegs +[x3] cmp x3, x0
- bne G_M57422_IG05
+ bne G_M57422_IG07
ldr x2, [x1, #0x10] cmp x2, x0
- bne G_M57422_IG04 - mov x0, x19 - b G_M57422_IG12
+ bne G_M57422_IG06 + mov x0, x20 + b G_M57422_IG14
;; size=60 bbWeight=0.50 PerfScore 9.50
-G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x2 x22]
+G_M57422_IG06: ; bbWeight=0.50, gcrefRegs=10000B {x0 x1 x3 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2 x21]
ldrsb wzr, [x1] mov x1, x3 mov x2, x0 @@ -124,42 +135,45 @@ G_M57422_IG04: ; bbWeight=0.50, gcrefRegs=8000B {x0 x1 x3 x19}, byrefRegs ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2] +[x0]
+ mov x21, x0 + ; gcrRegs +[x21] + movz x22, #0xD1FFAB1E + movk x22, #0xD1FFAB1E LSL #16 + movk x22, #0xD1FFAB1E LSL #32 + mov x0, x22 + ; gcrRegs -[x0] + bl CORINFO_HELP_NEWFAST_MAYBEFROZEN + ; gcrRegs +[x0]
mov x22, x0 ; gcrRegs +[x22]
- mov x0, x20 - ; gcrRegs -[x0] - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov x23, x0
+ ldr x23, [x20, #0x08]
; gcrRegs +[x23]
- ldr x20, [x19, #0x08] - ; gcrRegs +[x20] - ldr w19, [x19, #0x18] - ; gcrRegs -[x19] - cbz x22, G_M57422_IG17 - mov x15, x22
+ ldr w20, [x20, #0x18] + ; gcrRegs -[x20] + cbz x21, G_M57422_IG19 + mov x15, x21
; gcrRegs +[x15]
- add x14, x23, #16
+ add x14, x22, #16
; byrRegs +[x14] bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x22]
+ ; gcrRegs -[x0 x15 x21]
; byrRegs -[x14]
- ldr x2, [x21, #0xD1FFAB1E]
+ ldr x2, [x19, #0xD1FFAB1E]
; gcrRegs +[x2]
- add x14, x23, #8
+ add x14, x22, #8
; byrRegs +[x14] mov x15, x2 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x2 x15] ; byrRegs -[x14]
- cbz x20, G_M57422_IG16
+ cbz x23, G_M57422_IG18
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1]
- mov x0, x20
+ mov x0, x23
; gcrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]]):this ...

+4 (+4.55%) : 5919.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)

+20 (+6.25%) : 5480.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[] (FullOpts)
+; 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[] (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%) : 6610.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%) : 8174.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)

-36 (-31.03%) : 7919.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)

+8 (+6.06%) : 6340.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.80) 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.61) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.61) 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.80) 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.61 +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.60, 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.61, 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%) : 10112.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.38) long -> x19 single-def +; V02 arg1 [V02,T01] ( 4, 3.19) byref -> x20 single-def
; V03 loc0 [V03,T03] ( 7, 3.76) 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.53) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V06 tmp1 [V06,T04] ( 4, 1.53) 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.76) long -> x0 "runtime lookup" -; V10 rat1 [V10,T05] ( 3, 1.07) 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.34 -G_M58319_IG04: ; bbWeight=0.15, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref - b G_M58319_IG06 - ;; size=4 bbWeight=0.15 PerfScore 0.15 -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.11 -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.34 -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.48 +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.44, 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.48, 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%) : 15488.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,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: @@ -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%) : 6311.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%) : 14736.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%) : 697.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%) : 19908.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:SetCompletionAndInvokeContinuation():this (Tier1)

@@ -17,7 +17,7 @@ ; V06 tmp4 [V06,T05] ( 4, 2 ) ref -> x1 ; V07 tmp5 [V07,T01] ( 5, 5 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback> ; V08 tmp6 [V08,T03] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V09 cse0 [V09,T09] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
+;* V09 cse0 [V09,T09] ( 0, 0 ) byref -> zero-ref "CSE - aggressive"
; V10 cse1 [V10,T04] ( 3, 2.50) ref -> x20 "CSE - aggressive" ; V11 cse2 [V11,T02] ( 6, 3 ) long -> x21 multi-def "CSE - aggressive" ; @@ -70,7 +70,8 @@ G_M10558_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #1
- bl CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+ bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS + ; byrRegs +[x0]
; gcr arg pop 0 movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 @@ -79,9 +80,10 @@ G_M10558_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcrRegs +[x1] cbnz x1, G_M10558_IG06 movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
+ bl CORINFO_HELP_NEWFAST_MAYBEFROZEN
; gcrRegs -[x1] +[x0] ; gcr arg pop 0 mov x1, x0

+8 (+6.06%) : 1034.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%) : 14880.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

-36 (-28.12%) : 1012.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, #0xD1FFAB1E 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)

-28 (-28.00%) : 1395.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 Tier1)

@@ -8,14 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.36) long -> x1 single-def -; V02 arg1 [V02,T02] ( 3, 3 ) byref -> x19 single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> x1 single-def +; V02 arg1 [V02,T01] ( 3, 3 ) byref -> x19 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,T05] ( 2, 4 ) long -> x0 "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> x0 "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> x0 "spilling expr" -; V08 rat2 [V08,T03] ( 3, 4.48) long -> x0 "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -27,43 +24,28 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov x19, x2 ; byrRegs +[x19] ;; size=20 bbWeight=1 PerfScore 4.00
-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x1, #0x38] - ldr x2, [x0, #0x08] - cmp x2, #24 - ble G_M49756_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr x0, [x0, #0x18] - cbz x0, G_M49756_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M49756_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - b G_M49756_IG06 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M49756_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, 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
; gcr arg pop 0
- ;; size=20 bbWeight=0.36 PerfScore 1.08 -G_M49756_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x1, x19 ; byrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2]
- ;; size=20 bbWeight=1 PerfScore 5.00 -G_M49756_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=1 PerfScore 8.00 +G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 br x2 ; gcr arg pop 0 ;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 100, prolog size 20, PerfScore 25.42, instruction count 25, allocated bytes for code 100 (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 Tier1)
+; Total bytes of code 72, prolog size 20, PerfScore 16.00, instruction count 18, allocated bytes for code 72 (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 Tier1)
; ============================================================ Unwind Info: @@ -74,7 +56,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ 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)

-32 (-25.81%) : 2596.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefaultSystem.__Canon,int:byref (Instrumented Tier1)

@@ -7,16 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 4.36) long -> x0 single-def -; V01 arg0 [V01,T02] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> -; V02 arg1 [V02,T03] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> -; V03 arg2 [V03,T04] ( 3, 3 ) byref -> x21 single-def
+; V00 TypeCtx [V00,T00] ( 4, 4 ) long -> x0 single-def +; V01 arg0 [V01,T01] ( 3, 3 ) ref -> x19 class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,int]> +; V02 arg1 [V02,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.__Canon> +; V03 arg2 [V03,T03] ( 3, 3 ) byref -> x21 single-def
;# 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,T07] ( 2, 4 ) long -> x0 "argument with side effect" -; V07 rat0 [V07,T06] ( 3, 4 ) long -> x0 "runtime lookup" -; V08 rat1 [V08,T01] ( 3, 5.60) long -> x1 "spilling expr" -; V09 rat2 [V09,T05] ( 3, 4.48) long -> x2 "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; ; Lcl frame size = 8 @@ -33,28 +30,12 @@ G_M252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov x21, x3 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 6.00
-G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x1, [x0, #0x38] - ldr x2, [x1, #0x10] - cmp x2, #32 - ble G_M252_IG05 - ;; size=16 bbWeight=1 PerfScore 7.50 -G_M252_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz - ldr x2, [x1, #0x20] - cbz x2, G_M252_IG05 - ;; size=8 bbWeight=0.80 PerfScore 3.20 -G_M252_IG04: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref - mov x0, x2 - b G_M252_IG06 - ;; size=8 bbWeight=0.64 PerfScore 0.96 -G_M252_IG05: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
+G_M252_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, 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.36 PerfScore 0.90 -G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref
mov x1, x19 ; gcrRegs +[x1] mov x2, x20 @@ -65,8 +46,8 @@ G_M252_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 { movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4]
- ;; size=28 bbWeight=1 PerfScore 6.00 -G_M252_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1 PerfScore 8.50 +G_M252_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 @@ -74,7 +55,7 @@ G_M252_IG07: ; bbWeight=1, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 124, prolog size 32, PerfScore 29.56, instruction count 31, allocated bytes for code 124 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
+; Total bytes of code 92, prolog size 32, PerfScore 19.50, instruction count 23, allocated bytes for code 92 (MethodHash=54b5ff03) for method System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
; ============================================================ Unwind Info: @@ -85,7 +66,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ 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)

+12 (+7.89%) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)

@@ -8,7 +8,7 @@ ; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <System.Object> ;# 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_M43438_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x0, [fp, #0x58] // [V00 arg0] ;; size=12 bbWeight=1 PerfScore 2.50 G_M43438_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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -54,13 +59,13 @@ G_M43438_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #0xD1FFAB1E LSL #32 ldr x3, [x3] blr x3
- ;; size=132 bbWeight=1 PerfScore 38.50
+ ;; size=144 bbWeight=1 PerfScore 47.00
G_M43438_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=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=eabb5651) for method NullableTest13:BoxUnboxToQ(System.Object):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 (+7.89%) : 3680.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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E LSL #32 ldr x0, [x0] @@ -54,13 +59,13 @@ G_M63921_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movk x3, #0xD1FFAB1E 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%) : 3949.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, #0xD1FFAB1E 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, #0xD1FFAB1E 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, #0xD1FFAB1E 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)

libraries.pmi.windows.arm64.checked.mch

-24 (-25.00%) : 11910.dasm - System.Tuple:CreateSystem.__Canon,System.Nullable1[int]](System.__Canon,System.Nullable1[int]):System.Tuple2[System.__Canon,System.Nullable1[int]

@@ -8,14 +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.20) long -> x0 single-def -; V01 arg0 [V01,T03] ( 3, 3 ) ref -> x19 class-hnd single-def <System.__Canon> -; V02 arg1 [V02,T04] ( 3, 3 ) struct ( 8) x20 single-def <System.Nullable`1[int]>
+; 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 ) struct ( 8) x20 single-def <System.Nullable`1[int]>
;# 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.Nullable`1[int]]> ;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 rat0 [V06,T05] ( 3, 4 ) long -> x1 "runtime lookup" -; V07 rat1 [V07,T02] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -28,24 +26,12 @@ G_M65401_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] mov x20, x2 ;; size=24 bbWeight=1 PerfScore 4.50
-G_M65401_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x18] - cbz x1, G_M65401_IG04 - ;; size=12 bbWeight=1 PerfScore 7.00 -G_M65401_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - b G_M65401_IG05 - ;; size=4 bbWeight=0.80 PerfScore 0.80 -G_M65401_IG04: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M65401_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_M65401_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] @@ -55,14 +41,14 @@ G_M65401_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs -[x15 x19] ; byrRegs -[x14] str x20, [x0, #0x10]
- ;; size=24 bbWeight=1 PerfScore 4.50 -G_M65401_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=36 bbWeight=1 PerfScore 6.50 +G_M65401_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 96, prolog size 16, PerfScore 20.40, instruction count 24, allocated bytes for code 96 (MethodHash=4dd20086) for method 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)
+; Total bytes of code 72, prolog size 16, PerfScore 14.00, instruction count 18, allocated bytes for code 72 (MethodHash=4dd20086) for method 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)
; ============================================================ Unwind Info: @@ -73,7 +59,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ 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)

-20 (-25.00%) : 12006.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, #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_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, #0xD1FFAB1E 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)

-24 (-24.00%) : 12547.dasm - System.Numerics.Vector:AsSystem.Canon,System.Nullable1[int]](System.Numerics.Vector1[System.Canon]):System.Numerics.Vector1[System.Nullable1[int]

@@ -8,15 +8,13 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T00] ( 5, 3 ) long -> x0 single-def
+; V00 TypeCtx [V00,T00] ( 4, 3 ) long -> x0 single-def
;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret 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 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp3 [V05,T01] ( 1, 1 ) long -> x1 single-def "field V01._00 (fldOffset=0x0)" P-INDEP ; V06 tmp4 [V06,T02] ( 1, 1 ) long -> x2 single-def "field V01._01 (fldOffset=0x8)" P-INDEP
-; V07 rat0 [V07,T03] ( 3, 0 ) long -> x1 "runtime lookup" -; V08 rat1 [V08,T04] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -25,21 +23,11 @@ G_M15239_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov fp, sp str x0, [fp, #0x18] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M15239_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x1, [x0, #0x38] - ldr x1, [x1, #0x18] - cbz x1, G_M15239_IG03 - b G_M15239_IG04 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M15239_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15239_IG02: ; bbWeight=0, gcrefRegs=0000 {}, 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 PerfScore 0.00 -G_M15239_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x1
+ bl CORINFO_HELP_MEMCPY
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowForUnsupportedNumericsVectorBaseType[System.__Canon]() movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -52,9 +40,9 @@ G_M15239_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x1, [x1] blr x1 brk_windows #0
- ;; size=52 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 12, PerfScore 0.00, instruction count 25, allocated bytes for code 100 (MethodHash=e0ddc478) for method 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)
+; Total bytes of code 76, prolog size 12, PerfScore 0.00, instruction count 19, allocated bytes for code 76 (MethodHash=e0ddc478) for method 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)
; ============================================================ Unwind Info: @@ -65,7 +53,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

+4 (+2.38%) : 1962.dasm - Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)

@@ -33,7 +33,7 @@ G_M23842_IG02: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] @@ -45,8 +45,9 @@ G_M23842_IG02: ; bbWeight=1, 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=60 bbWeight=1 PerfScore 13.50
+ ;; size=64 bbWeight=1 PerfScore 16.50
G_M23842_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -59,7 +60,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { 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] ; gcr arg pop 0 mov x19, x0 @@ -70,7 +71,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { 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] ; gcr arg pop 0 mov x1, x0 @@ -86,7 +87,7 @@ G_M23842_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 16, PerfScore 20.50, instruction count 42, allocated bytes for code 168 (MethodHash=dd33a2dd) for method Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)
+; Total bytes of code 172, prolog size 16, PerfScore 23.50, instruction count 43, allocated bytes for code 172 (MethodHash=dd33a2dd) for method Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +98,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+2.50%) : 1949.dasm - Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)

@@ -30,7 +30,7 @@ G_M32832_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTINTERFACE
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] @@ -40,8 +40,9 @@ G_M32832_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre movz x11, #0xD1FFAB1E // code for <unknown method> movk x11, #0xD1FFAB1E LSL #16 movk x11, #0xD1FFAB1E LSL #32
+ ldr wzr, [x0]
ldr x1, [x11]
- ;; size=56 bbWeight=1 PerfScore 13.00
+ ;; size=60 bbWeight=1 PerfScore 16.00
G_M32832_IG03: ; bbWeight=1, epilog, nogc, extend ldr x19, [sp, #0x18] ldp fp, lr, [sp], #0x20 @@ -54,7 +55,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { 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] ; gcr arg pop 0 mov x19, x0 @@ -65,7 +66,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { 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] ; gcr arg pop 0 mov x1, x0 @@ -81,7 +82,7 @@ G_M32832_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { brk_windows #0 ;; size=80 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 12, PerfScore 19.50, instruction count 40, allocated bytes for code 160 (MethodHash=0e6f7fbf) for method Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
+; Total bytes of code 164, prolog size 12, PerfScore 22.50, instruction count 41, allocated bytes for code 164 (MethodHash=0e6f7fbf) for method Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ 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)

+20 (+6.02%) : 18169.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

libraries_tests.run.windows.arm64.Release.mch

-36 (-33.33%) : 154.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%) : 5761.dasm - Microsoft.VisualStudio.Composition.DelegateServices:FromValueSystem.__Canon:System.Func`1System.__Canon

@@ -19,28 +19,13 @@ G_M54291_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_M54291_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_M54291_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M54291_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_M54291_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M54291_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54291_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_M54291_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_M54291_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr x2, [x2] blr x2 ; gcrRegs -[x1] +[x0]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M54291_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M54291_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=caf92bec) for method Microsoft.VisualStudio.Composition.DelegateServices:FromValue[System.__Canon](System.__Canon):System.Func`1[System.__Canon] (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=caf92bec) for method Microsoft.VisualStudio.Composition.DelegateServices:FromValue[System.__Canon](System.__Canon):System.Func`1[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%) : 11433.dasm - Roslyn.Utilities.RoslynLazyInitializer:EnsureInitializedSystem.__Canon:System.__Canon (Tier0)

@@ -19,28 +19,13 @@ G_M43027_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_M43027_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_M43027_IG04 - ;; size=16 bbWeight=1 PerfScore 9.00 -G_M43027_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_M43027_IG05 - ;; size=20 bbWeight=0.80 PerfScore 8.00 -G_M43027_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43027_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_M43027_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x10] // [V03 tmp1] ldr x1, [fp, #0x18] // [V01 arg0] ; byrRegs +[x1] @@ -51,13 +36,13 @@ G_M43027_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blr x2 ; gcrRegs +[x0] ; byrRegs -[x1]
- ;; size=28 bbWeight=1 PerfScore 9.50 -G_M43027_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=52 bbWeight=1 PerfScore 15.00 +G_M43027_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=b56857ec) for method Roslyn.Utilities.RoslynLazyInitializer:EnsureInitialized[System.__Canon](byref):System.__Canon (Tier0)
+; Total bytes of code 80, prolog size 12, PerfScore 21.50, instruction count 20, allocated bytes for code 80 (MethodHash=b56857ec) for method Roslyn.Utilities.RoslynLazyInitializer:EnsureInitialized[System.__Canon](byref):System.__Canon (Tier0)
; ============================================================ Unwind Info: @@ -68,7 +53,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)

+0 (0.00%) : 4856.dasm - Microsoft.VisualStudio.Composition.PartDiscovery+<>cDisplayClass33_0:b0(System.Reflection.Assembly):System.Collections.Generic.IEnumerable`1[System.Type]:this (Tier0)

@@ -192,7 +192,7 @@ G_M33609_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 { ; 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, #0x90] // [V19 tmp9] @@ -310,9 +310,11 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #209
- 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] @@ -328,7 +330,7 @@ G_M33609_IG15: ; bbWeight=0, 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, #0x68] // [V24 tmp14] @@ -337,9 +339,11 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #209
- 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] @@ -362,7 +366,8 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #209
- bl CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ bl CORINFO_HELP_GETSHARED_GCSTATIC_BASE + ; byrRegs +[x0]
; gcr arg pop 0 ldr x15, [fp, #0x68] // [V24 tmp14] ; gcrRegs +[x15] @@ -371,6 +376,7 @@ G_M33609_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x14, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15]
+ ; byrRegs -[x0]
ldr x0, [fp, #0x68] // [V24 tmp14] ; gcrRegs +[x0] str x0, [fp, #0x70] // [V23 tmp13] @@ -464,7 +470,7 @@ G_M33609_IG22: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0001 { ; 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, #0xB0] // [V15 tmp5]

+0 (0.00%) : 8120.dasm - Microsoft.CodeAnalysis.DocumentState+d__20:MoveNext():this (Tier0)

@@ -50,9 +50,11 @@ G_M38504_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 mov w1, #163
- 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]

+0 (0.00%) : 10372.dasm - Microsoft.CodeAnalysis.SyntaxValueProvider:GetMatchingNodes(Microsoft.CodeAnalysis.ISyntaxHelper,Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases,Microsoft.CodeAnalysis.SyntaxTree,System.String,System.Func3[Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken,ubyte],System.Threading.CancellationToken):System.Collections.Immutable.ImmutableArray1Microsoft.CodeAnalysis.SyntaxNode

@@ -129,9 +129,11 @@ G_M34356_IG05: ; 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] @@ -245,9 +247,11 @@ G_M34356_IG12: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { 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]

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-24 (-31.58%) : 2212.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%) : 2316.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%) : 3129.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%) : 7121.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%) : 5696.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%) : 6087.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%) : 10875.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%) : 3174.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%) : 2284.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%) : 5886.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%) : 5883.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%) : 8921.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 132 103 3 26 -5,536 +60
benchmarks.run_pgo.windows.arm64.checked.mch 335 287 14 34 -19,808 +112
benchmarks.run_tiered.windows.arm64.checked.mch 258 219 2 37 -17,120 +28
coreclr_tests.run.windows.arm64.checked.mch 103 73 27 3 -768 +156
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 131 75 5 51 -1,624 +892
libraries_tests.run.windows.arm64.Release.mch 314 295 0 19 -22,440 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 188 138 19 31 -8,212 +480
realworld.run.windows.arm64.checked.mch 353 319 13 21 -17,552 +388
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
1,814 1,509 83 222 -93,060 +2,116

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 4,454 2 4,452 464 (5.38%) 3,778 (43.78%)
benchmarks.run_pgo.windows.arm64.checked.mch 14,762 12,353 2,409 277 (1.28%) 6,530 (30.11%)
benchmarks.run_tiered.windows.arm64.checked.mch 14,808 12,830 1,978 111 (0.55%) 4,968 (24.63%)
coreclr_tests.run.windows.arm64.checked.mch 2,161 1,237 924 56 (1.23%) 2,008 (43.99%)
libraries.crossgen2.windows.arm64.checked.mch 8,271 10 8,261 0 (0.00%) 3,143 (26.61%)
libraries.pmi.windows.arm64.checked.mch 12,766 1 12,765 697 (3.81%) 5,121 (28.01%)
libraries_tests.run.windows.arm64.Release.mch 13,311 13,075 236 22 (0.12%) 4,507 (24.74%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 5,322 0 5,322 1,015 (10.10%) 4,330 (43.08%)
realworld.run.windows.arm64.checked.mch 8,950 1 8,949 1,001 (7.10%) 4,747 (33.68%)
smoke_tests.nativeaot.windows.arm64.checked.mch 5,072 3 5,069 348 (2.76%) 7,141 (56.63%)
89,877 39,512 50,365 3,991 (2.85%) 46,273 (33.03%)

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: 850828 (overridden on cmd)
Total bytes of diff: 845352 (overridden on cmd)
Total bytes of delta: -5476 (-0.64 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 7215.dasm (3.83 % of base)
          20 : 5480.dasm (6.25 % of base)
           4 : 5919.dasm (4.55 % of base)

Top file improvements (bytes):
        -328 : 7327.dasm (-23.98 % of base)
        -212 : 245.dasm (-30.99 % of base)
        -212 : 591.dasm (-33.12 % of base)
        -208 : 5757.dasm (-15.76 % of base)
        -184 : 249.dasm (-24.34 % of base)
        -184 : 544.dasm (-26.14 % of base)
        -156 : 4370.dasm (-29.32 % of base)
        -144 : 5640.dasm (-15.06 % of base)
        -136 : 1727.dasm (-30.63 % of base)
        -132 : 4844.dasm (-19.30 % of base)
        -128 : 4901.dasm (-27.12 % of base)
        -128 : 479.dasm (-18.71 % of base)
        -128 : 7655.dasm (-25.81 % of base)
        -100 : 6469.dasm (-20.49 % of base)
        -100 : 214.dasm (-19.84 % of base)
        -100 : 7518.dasm (-24.04 % of base)
         -92 : 4378.dasm (-22.12 % of base)
         -72 : 4369.dasm (-23.38 % of base)
         -72 : 4505.dasm (-25.00 % of base)
         -72 : 1946.dasm (-23.38 % of base)

46 total files with Code Size differences (43 improved, 3 regressed), 24 unchanged.

Top method regressions (bytes):
          36 (3.83 % of base) : 7215.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          20 (6.25 % of base) : 5480.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (4.55 % of base) : 5919.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)

Top method improvements (bytes):
        -328 (-23.98 % of base) : 7327.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) : 591.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-15.76 % of base) : 5757.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) : 544.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) : 4370.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) : 5640.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) : 1727.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -132 (-19.30 % of base) : 4844.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) : 4901.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) : 7655.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
        -128 (-18.71 % of base) : 479.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -100 (-20.49 % of base) : 6469.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
        -100 (-24.04 % of base) : 7518.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) : 4378.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
         -72 (-15.00 % of base) : 6429.dasm - ProtoBuf.ProtoWriter:WriteMessage[System.__Canon](byref,System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon],int,ubyte):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)
         -72 (-23.38 % of base) : 4369.dasm - System.Linq.Enumerable:Take[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) : 5480.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
           4 (4.55 % of base) : 5919.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
          36 (3.83 % of base) : 7215.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)

Top method improvements (percentages):
        -212 (-33.12 % of base) : 591.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) : 8812.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
        -136 (-30.63 % of base) : 1727.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
        -156 (-29.32 % of base) : 4370.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) : 4901.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) : 6383.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -184 (-26.14 % of base) : 544.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) : 7655.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (FullOpts)
         -72 (-25.00 % of base) : 4505.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) : 1942.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -44 (-24.44 % of base) : 6106.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
         -44 (-24.44 % of base) : 4507.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) : 7518.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) : 7327.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) : 4436.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -72 (-23.38 % of base) : 4369.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) : 1946.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: 2287604 (overridden on cmd)
Total bytes of diff: 2267908 (overridden on cmd)
Total bytes of delta: -19696 (-0.86 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 15488.dasm (6.06 % of base)
           8 : 19001.dasm (6.06 % of base)
           8 : 22046.dasm (6.06 % of base)
           8 : 2523.dasm (6.06 % of base)
           8 : 2855.dasm (6.06 % of base)
           8 : 3255.dasm (6.06 % of base)
           8 : 5515.dasm (6.06 % of base)
           8 : 5993.dasm (6.06 % of base)
           8 : 6031.dasm (6.06 % of base)
           8 : 6226.dasm (6.06 % of base)
           8 : 6299.dasm (6.06 % of base)
           8 : 6340.dasm (6.06 % of base)
           8 : 10112.dasm (6.06 % of base)
           8 : 15430.dasm (6.06 % of base)

Top file improvements (bytes):
        -428 : 1905.dasm (-43.85 % of base)
        -428 : 731.dasm (-42.63 % of base)
        -372 : 1763.dasm (-37.35 % of base)
        -372 : 2884.dasm (-32.98 % of base)
        -372 : 737.dasm (-35.36 % of base)
        -316 : 4886.dasm (-40.10 % of base)
        -316 : 5754.dasm (-37.44 % of base)
        -296 : 8539.dasm (-39.78 % of base)
        -260 : 2215.dasm (-39.88 % of base)
        -260 : 7961.dasm (-40.37 % of base)
        -260 : 8189.dasm (-40.37 % of base)
        -260 : 1616.dasm (-27.66 % of base)
        -260 : 16625.dasm (-35.71 % of base)
        -240 : 277.dasm (-32.97 % of base)
        -212 : 16671.dasm (-33.12 % of base)
        -212 : 21790.dasm (-33.12 % of base)
        -212 : 4941.dasm (-33.12 % of base)
        -212 : 8030.dasm (-32.12 % of base)
        -204 : 12614.dasm (-30.00 % of base)
        -204 : 666.dasm (-30.18 % of base)

63 total files with Code Size differences (49 improved, 14 regressed), 22 unchanged.

Top method regressions (bytes):
           8 (6.06 % of base) : 15488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19001.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22046.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2523.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2855.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 3255.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5993.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6031.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6226.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6299.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6340.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 10112.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15430.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) : 731.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) : 1905.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-32.98 % of base) : 2884.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) : 737.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 1763.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) : 4886.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) : 5754.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 8539.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) : 2215.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) : 8189.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) : 7961.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) : 16625.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1616.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 277.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 16671.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 21790.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-33.12 % of base) : 4941.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -212 (-32.12 % of base) : 8030.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-30.00 % of base) : 12614.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-30.18 % of base) : 666.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):
           8 (6.06 % of base) : 15488.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 19001.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 22046.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2523.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 2855.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 3255.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 5993.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6031.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6226.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6299.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 6340.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 10112.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (6.06 % of base) : 15430.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) : 1905.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 731.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) : 13582.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -148 (-41.57 % of base) : 4921.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-41.07 % of base) : 14056.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 22802.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -260 (-40.37 % of base) : 8189.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) : 7961.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) : 4886.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -260 (-39.88 % of base) : 2215.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) : 8539.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) : 11337.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 9337.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -148 (-37.76 % of base) : 7689.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) : 5754.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -372 (-37.35 % of base) : 1763.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) : 1891.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) : 4885.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) : 8236.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 7691.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: 2227248 (overridden on cmd)
Total bytes of diff: 2210156 (overridden on cmd)
Total bytes of delta: -17092 (-0.77 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



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

Top file improvements (bytes):
        -428 : 1733.dasm (-43.85 % of base)
        -428 : 692.dasm (-42.63 % of base)
        -372 : 1607.dasm (-37.35 % of base)
        -372 : 5666.dasm (-32.98 % of base)
        -372 : 698.dasm (-35.36 % of base)
        -316 : 5034.dasm (-38.54 % of base)
        -316 : 5272.dasm (-37.44 % of base)
        -296 : 8594.dasm (-39.78 % of base)
        -268 : 7324.dasm (-40.36 % of base)
        -260 : 14369.dasm (-35.91 % of base)
        -260 : 1460.dasm (-27.66 % of base)
        -260 : 5738.dasm (-39.88 % of base)
        -240 : 279.dasm (-32.97 % of base)
        -212 : 4405.dasm (-33.12 % of base)
        -204 : 19612.dasm (-25.76 % of base)
        -204 : 5742.dasm (-32.69 % of base)
        -204 : 627.dasm (-30.18 % of base)
        -204 : 8768.dasm (-30.00 % of base)
        -204 : 11785.dasm (-32.28 % of base)
        -184 : 1717.dasm (-31.72 % of base)

53 total files with Code Size differences (51 improved, 2 regressed), 27 unchanged.

Top method regressions (bytes):
          20 (6.25 % of base) : 14880.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) : 1034.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) : 692.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) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-32.98 % of base) : 5666.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) : 698.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-37.35 % of base) : 1607.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) : 5034.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) : 5272.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -296 (-39.78 % of base) : 8594.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) : 7324.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) : 5738.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.91 % of base) : 14369.dasm - System.Linq.Enumerable:ElementAt[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.__Canon (Tier0)
        -260 (-27.66 % of base) : 1460.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -240 (-32.97 % of base) : 279.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -212 (-33.12 % of base) : 4405.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-25.76 % of base) : 19612.dasm - MessagePack.MessagePackSerializer:Deserialize[System.__Canon](System.IO.Stream,MessagePack.IFormatterResolver,ubyte):System.__Canon (Tier0)
        -204 (-32.28 % of base) : 11785.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -204 (-30.00 % of base) : 8768.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -204 (-32.69 % of base) : 5742.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) : 627.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 (-31.72 % of base) : 1717.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):
          20 (6.25 % of base) : 14880.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) : 1034.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) : 1733.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-42.63 % of base) : 692.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) : 11171.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
         -92 (-41.07 % of base) : 11665.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerCore[System.__Canon](int):ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -268 (-40.36 % of base) : 7324.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) : 5738.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) : 8594.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) : 5079.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -316 (-38.54 % of base) : 5034.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) : 13711.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -92 (-38.33 % of base) : 10822.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -148 (-37.76 % of base) : 7712.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) : 5272.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -372 (-37.35 % of base) : 1607.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) : 1719.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) : 5033.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) : 14910.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (Tier0)
         -92 (-36.51 % of base) : 7714.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) : 6790.dasm - Microsoft.Extensions.Options.OptionsMonitorExtensions:OnChange[System.__Canon](Microsoft.Extensions.Options.IOptionsMonitor`1[System.__Canon],System.Action`1[System.__Canon]):System.IDisposable (Tier0)
         -92 (-35.94 % of base) : 3165.dasm - System.Text.Json.Serialization.Metadata.JsonMetadataServices:CreateIListInfo[System.__Canon](System.Text.Json.JsonSerializerOptions,System.Text.Json.Serialization.Metadata.JsonCollectionInfoValues`1[System.__Canon]):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (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: 561672 (overridden on cmd)
Total bytes of diff: 561060 (overridden on cmd)
Total bytes of delta: -612 (-0.11 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 3680.dasm (7.89 % of base)
          12 : 3917.dasm (7.89 % of base)
          12 : 3949.dasm (8.33 % of base)
          12 : 4129.dasm (7.14 % of base)
          12 : 4199.dasm (6.82 % of base)
          12 : 4876.dasm (6.67 % of base)
           4 : 3599.dasm (3.70 % of base)
           4 : 3580.dasm (3.70 % of base)
           4 : 3999.dasm (3.70 % of base)
           4 : 4009.dasm (3.70 % of base)
           4 : 4049.dasm (3.70 % of base)
           4 : 4059.dasm (3.70 % of base)
           4 : 4069.dasm (3.70 % of base)
           4 : 4109.dasm (3.70 % of base)
           4 : 4119.dasm (3.70 % of base)
           4 : 4149.dasm (3.70 % of base)
           4 : 4159.dasm (3.70 % of base)
           4 : 4169.dasm (3.70 % of base)
           4 : 4179.dasm (3.70 % of base)
           4 : 4842.dasm (2.94 % of base)

Top file improvements (bytes):
         -60 : 3740.dasm (-14.02 % of base)
         -36 : 1589.dasm (-15.79 % of base)
         -36 : 1012.dasm (-28.12 % of base)
         -36 : 2174.dasm (-15.79 % of base)
         -32 : 1676.dasm (-17.39 % of base)
         -32 : 2596.dasm (-25.81 % of base)
         -32 : 1399.dasm (-21.62 % of base)
         -32 : 1639.dasm (-21.62 % of base)
         -32 : 2798.dasm (-21.62 % of base)
         -32 : 2841.dasm (-21.62 % of base)
         -28 : 1398.dasm (-21.88 % of base)
         -28 : 1395.dasm (-28.00 % of base)
         -28 : 1638.dasm (-21.88 % of base)
         -28 : 2799.dasm (-7.78 % of base)
         -28 : 1394.dasm (-14.58 % of base)
         -24 : 3736.dasm (-4.48 % of base)
         -20 : 2643.dasm (-8.93 % of base)
          -4 : 3362.dasm (-3.70 % of base)
          -4 : 3355.dasm (-3.70 % of base)
          -4 : 3617.dasm (-3.70 % of base)

60 total files with Code Size differences (35 improved, 25 regressed), 3 unchanged.

Top method regressions (bytes):
          12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3680.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (6.67 % of base) : 4876.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3580.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (2.94 % of base) : 4842.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (2.94 % of base) : 4844.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3587.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4009.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4049.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4069.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (2.94 % of base) : 4846.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4109.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method improvements (bytes):
         -60 (-14.02 % of base) : 3740.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier1)
         -36 (-28.12 % of base) : 1012.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) : 2174.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) : 1589.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)
         -32 (-21.62 % of base) : 2798.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -32 (-21.62 % of base) : 2841.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -32 (-21.62 % of base) : 1399.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
         -32 (-21.62 % of base) : 1639.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
         -32 (-25.81 % of base) : 2596.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -32 (-17.39 % of base) : 1676.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
         -28 (-7.78 % of base) : 2799.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -28 (-21.88 % of base) : 1398.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
         -28 (-21.88 % of base) : 1638.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
         -28 (-28.00 % of base) : 1395.dasm - 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 Tier1)
         -28 (-14.58 % of base) : 1394.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
         -24 (-4.48 % of base) : 3736.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-8.93 % of base) : 2643.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 (Tier1)
          -4 (-3.70 % of base) : 3355.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3634.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)

Top method regressions (percentages):
          12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3680.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.67 % of base) : 4876.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           4 (3.70 % of base) : 3580.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3587.dasm - NullableTest2:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4009.dasm - NullableTest22:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4049.dasm - NullableTest26:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4069.dasm - NullableTest28:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4109.dasm - NullableTest32:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3599.dasm - NullableTest4:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4169.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4179.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method improvements (percentages):
         -36 (-28.12 % of base) : 1012.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -28 (-28.00 % of base) : 1395.dasm - 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 Tier1)
         -32 (-25.81 % of base) : 2596.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -28 (-21.88 % of base) : 1398.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
         -28 (-21.88 % of base) : 1638.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
         -32 (-21.62 % of base) : 2798.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -32 (-21.62 % of base) : 2841.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -32 (-21.62 % of base) : 1399.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
         -32 (-21.62 % of base) : 1639.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
         -32 (-17.39 % of base) : 1676.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
         -36 (-15.79 % of base) : 2174.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) : 1589.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)
         -28 (-14.58 % of base) : 1394.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
         -60 (-14.02 % of base) : 3740.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier1)
         -20 (-8.93 % of base) : 2643.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 (Tier1)
         -28 (-7.78 % of base) : 2799.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -24 (-4.48 % of base) : 3736.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.70 % of base) : 3355.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3634.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)


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

Detail diffs



Top file regressions (bytes):
         804 : 14261.dasm (88.16 % of base)
          60 : 6051.dasm (41.67 % of base)
          20 : 18169.dasm (6.02 % of base)
           4 : 1949.dasm (2.50 % of base)
           4 : 1962.dasm (2.38 % of base)

Top file improvements (bytes):
         -72 : 10584.dasm (-19.35 % of base)
         -72 : 8912.dasm (-13.74 % of base)
         -64 : 3517.dasm (-20.00 % of base)
         -64 : 2938.dasm (-18.82 % of base)
         -44 : 12392.dasm (-23.91 % of base)
         -44 : 12396.dasm (-17.74 % of base)
         -44 : 2897.dasm (-23.40 % of base)
         -40 : 9715.dasm (-16.95 % of base)
         -24 : 12547.dasm (-24.00 % of base)
         -24 : 14326.dasm (-2.94 % of base)
         -24 : 18230.dasm (-17.65 % of base)
         -24 : 2895.dasm (-21.43 % of base)
         -24 : 3333.dasm (-4.51 % of base)
         -24 : 11910.dasm (-25.00 % of base)
         -20 : 13498.dasm (-15.15 % of base)
         -20 : 13957.dasm (-13.16 % of base)
         -20 : 18304.dasm (-17.86 % of base)
         -20 : 8903.dasm (-14.29 % of base)
         -20 : 8906.dasm (-16.13 % of base)
         -20 : 8909.dasm (-13.16 % of base)

43 total files with Code Size differences (38 improved, 5 regressed), 30 unchanged.

Top method regressions (bytes):
         804 (88.16 % of base) : 14261.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          60 (41.67 % of base) : 6051.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          20 (6.02 % of base) : 18169.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
           4 (2.50 % of base) : 1949.dasm - Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
           4 (2.38 % of base) : 1962.dasm - Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)

Top method improvements (bytes):
         -72 (-13.74 % of base) : 8912.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)
         -72 (-19.35 % of base) : 10584.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)
         -64 (-20.00 % of base) : 3517.dasm - Microsoft.Build.Execution.ProjectInstance:CreateCloneDictionary[System.__Canon](System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.StringComparer):System.Collections.ObjectModel.ReadOnlyDictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -64 (-18.82 % of base) : 2938.dasm - Microsoft.Build.Internal.Tracing:List[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]) (FullOpts)
         -44 (-23.40 % of base) : 2897.dasm - Microsoft.Build.Internal.Utilities:ToArray[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.__Canon[] (FullOpts)
         -44 (-23.91 % of base) : 12392.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 12396.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 9715.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -24 (-4.51 % of base) : 3333.dasm - Microsoft.Build.Execution.BuildResult:KeepSpecificTargetResults(System.Collections.Generic.IReadOnlyCollection`1[System.String]):this (FullOpts)
         -24 (-21.43 % of base) : 2895.dasm - Microsoft.Build.Internal.Utilities:ToEnumerable[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -24 (-24.00 % of base) : 12547.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)
         -24 (-17.65 % of base) : 18230.dasm - System.Runtime.InteropServices.MemoryMarshal:<ToEnumerable>g__FromString|18_0[System.__Canon](System.String,int,int):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -24 (-2.94 % of base) : 14326.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:<AppendEnum>g__GrowAndAppendFormatted|21_0[System.__Canon](byref,System.__Canon,int,byref,System.String):ubyte (FullOpts)
         -24 (-25.00 % of base) : 11910.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 (-16.67 % of base) : 6411.dasm - Microsoft.Build.Shared.CollectionHelpers:SetEquivalent[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -20 (-14.29 % of base) : 8903.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][]) (FullOpts)
         -20 (-16.13 % of base) : 8906.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int) (FullOpts)
         -20 (-13.16 % of base) : 8909.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
         -20 (-16.13 % of base) : 10582.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]]) (FullOpts)
         -20 (-17.86 % of base) : 18304.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):byref (FullOpts)

Top method regressions (percentages):
         804 (88.16 % of base) : 14261.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          60 (41.67 % of base) : 6051.dasm - Microsoft.Build.Collections.ReadOnlyCollection`1[System.Numerics.Vector`1[float]]:Contains(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          20 (6.02 % of base) : 18169.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
           4 (2.50 % of base) : 1949.dasm - Microsoft.Build.Evaluation.Project:GetEvaluatedItemIncludeEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition):System.String (FullOpts)
           4 (2.38 % of base) : 1962.dasm - Microsoft.Build.Evaluation.Project:GetMetadataValueEscaped(Microsoft.Build.Evaluation.ProjectItemDefinition,System.String):System.String (FullOpts)

Top method improvements (percentages):
         -24 (-25.00 % of base) : 11910.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) : 12006.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)
         -24 (-24.00 % of base) : 12547.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) : 12392.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-23.40 % of base) : 2897.dasm - Microsoft.Build.Internal.Utilities:ToArray[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.__Canon[] (FullOpts)
         -24 (-21.43 % of base) : 2895.dasm - Microsoft.Build.Internal.Utilities:ToEnumerable[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -20 (-20.83 % of base) : 12003.dasm - System.TupleExtensions:ToValueTuple[System.__Canon,System.Nullable`1[int]](System.Tuple`2[System.__Canon,System.Nullable`1[int]]):System.ValueTuple`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
         -64 (-20.00 % of base) : 3517.dasm - Microsoft.Build.Execution.ProjectInstance:CreateCloneDictionary[System.__Canon](System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],System.StringComparer):System.Collections.ObjectModel.ReadOnlyDictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -72 (-19.35 % of base) : 10584.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)
         -64 (-18.82 % of base) : 2938.dasm - Microsoft.Build.Internal.Tracing:List[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]) (FullOpts)
         -20 (-17.86 % of base) : 18304.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]],System.__Canon,byref):byref (FullOpts)
         -44 (-17.74 % of base) : 12396.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -24 (-17.65 % of base) : 18230.dasm - System.Runtime.InteropServices.MemoryMarshal:<ToEnumerable>g__FromString|18_0[System.__Canon](System.String,int,int):System.Collections.Generic.IEnumerable`1[ushort] (FullOpts)
         -40 (-16.95 % of base) : 9715.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -20 (-16.67 % of base) : 6411.dasm - Microsoft.Build.Shared.CollectionHelpers:SetEquivalent[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
         -20 (-16.67 % of base) : 14634.dasm - System.Runtime.Intrinsics.Vector128:StoreLowerUnsafe[System.__Canon](System.Runtime.Intrinsics.Vector128`1[System.__Canon],byref,ulong) (FullOpts)
         -20 (-16.13 % of base) : 8906.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][],int,int) (FullOpts)
         -20 (-16.13 % of base) : 10582.dasm - System.MemoryExtensions:Sort[System.__Canon,System.Nullable`1[int]](System.Span`1[System.__Canon],System.Span`1[System.Nullable`1[int]]) (FullOpts)
         -20 (-15.15 % of base) : 13498.dasm - System.Threading.Tasks.Task`1[System.__Canon]:ContinueWith[ubyte](System.Func`2[System.__Canon,ubyte],System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task`1[ubyte]:this (FullOpts)
         -20 (-14.29 % of base) : 8903.dasm - System.Array:Sort[System.__Canon,System.Nullable`1[int]](System.__Canon[],System.Nullable`1[int][]) (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: 2258308 (overridden on cmd)
Total bytes of diff: 2235868 (overridden on cmd)
Total bytes of delta: -22440 (-0.99 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -428 : 40.dasm (-43.85 % of base)
        -428 : 23.dasm (-41.96 % of base)
        -372 : 1342.dasm (-36.47 % of base)
        -372 : 130.dasm (-36.19 % of base)
        -296 : 2003.dasm (-39.78 % of base)
        -260 : 1370.dasm (-28.14 % of base)
        -260 : 2909.dasm (-43.92 % of base)
        -260 : 136.dasm (-40.37 % of base)
        -260 : 4405.dasm (-40.88 % of base)
        -260 : 3955.dasm (-40.37 % of base)
        -240 : 5314.dasm (-32.97 % of base)
        -212 : 3983.dasm (-33.12 % of base)
        -204 : 4170.dasm (-34.46 % of base)
        -204 : 10081.dasm (-17.65 % of base)
        -204 : 1608.dasm (-32.48 % of base)
        -204 : 9951.dasm (-30.00 % of base)
        -204 : 16445.dasm (-20.00 % of base)
        -200 : 17781.dasm (-36.50 % of base)
        -184 : 1385.dasm (-31.72 % of base)
        -184 : 2285.dasm (-15.44 % of base)

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

Top method improvements (bytes):
        -428 (-41.96 % of base) : 23.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) : 40.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -372 (-36.47 % of base) : 1342.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -372 (-36.19 % of base) : 130.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)
        -296 (-39.78 % of base) : 2003.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) : 4405.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 3955.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) : 136.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) : 1370.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -260 (-43.92 % of base) : 2909.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -240 (-32.97 % of base) : 5314.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)
        -212 (-33.12 % of base) : 3983.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
        -204 (-20.00 % of base) : 16445.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety:IsVarianceUnsafe[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.VarianceSafety+LocationProvider`1[System.__Canon],System.__Canon,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (Tier0)
        -204 (-17.65 % of base) : 10081.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 (Tier0)
        -204 (-30.00 % of base) : 9951.dasm - System.Array:Sort[System.ValueTuple`2[int,System.__Canon]](System.ValueTuple`2[int,System.__Canon][],int,int,System.Collections.Generic.IComparer`1[System.ValueTuple`2[int,System.__Canon]]) (Tier0)
        -204 (-34.46 % of base) : 4170.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -204 (-32.48 % of base) : 1608.dasm - System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (Tier0)
        -200 (-36.50 % of base) : 17781.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+TupleExtraData:<EqualsIgnoringTupleUnderlyingType>g__areEqual|20_0[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier0)
        -184 (-31.72 % of base) : 1385.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) : 2285.dasm - System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:GetStateMachineBox[Xunit.Sdk.XunitTestAssemblyRunner+<RunTestCollectionsAsync>d__14](byref,byref):System.Runtime.CompilerServices.IAsyncStateMachineBox (Tier0)

Top method improvements (percentages):
        -260 (-43.92 % of base) : 2909.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -428 (-43.85 % of base) : 40.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -428 (-41.96 % of base) : 23.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -148 (-41.57 % of base) : 7351.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
        -148 (-41.57 % of base) : 6020.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-41.11 % of base) : 5411.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 10203.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
         -92 (-41.07 % of base) : 4350.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]] (Tier0)
        -260 (-40.88 % of base) : 4405.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -260 (-40.37 % of base) : 3955.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) : 136.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -148 (-40.22 % of base) : 7401.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
        -148 (-40.22 % of base) : 5802.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 (Tier0)
        -148 (-39.78 % of base) : 16506.dasm - System.Collections.Immutable.ImmutableList:IndexOf[System.__Canon](System.Collections.Immutable.IImmutableList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (Tier0)
        -296 (-39.78 % of base) : 2003.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) : 10.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
         -92 (-39.66 % of base) : 5032.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):System.__Canon (Tier0)
         -92 (-39.66 % of base) : 10749.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (Tier0)
         -92 (-39.66 % of base) : 7509.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] (Tier0)
         -92 (-39.66 % of base) : 5930.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] (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: 1051504 (overridden on cmd)
Total bytes of diff: 1043772 (overridden on cmd)
Total bytes of delta: -7732 (-0.74 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 6335.dasm (8.99 % of base)
          64 : 4901.dasm (5.39 % of base)
          64 : 9500.dasm (11.76 % of base)
          48 : 7121.dasm (16.67 % of base)
          28 : 9509.dasm (7.87 % of base)
          24 : 9492.dasm (6.25 % of base)
          24 : 5696.dasm (23.08 % of base)
          24 : 6087.dasm (31.58 % of base)
          24 : 2879.dasm (6.59 % of base)
          24 : 9033.dasm (11.32 % of base)
          20 : 5727.dasm (16.13 % of base)
          20 : 69.dasm (6.25 % of base)
          12 : 12754.dasm (5.45 % of base)
          12 : 2882.dasm (1.01 % of base)
           8 : 2067.dasm (1.36 % of base)
           4 : 5725.dasm (3.03 % of base)
           4 : 7629.dasm (1.89 % of base)
           4 : 11710.dasm (3.45 % of base)
           4 : 4256.dasm (3.45 % of base)

Top file improvements (bytes):
        -384 : 9486.dasm (-25.26 % of base)
        -328 : 3040.dasm (-23.98 % of base)
        -328 : 992.dasm (-22.47 % of base)
        -228 : 2959.dasm (-7.52 % of base)
        -212 : 10.dasm (-30.99 % of base)
        -212 : 13.dasm (-33.33 % of base)
        -212 : 3400.dasm (-12.62 % of base)
        -204 : 11198.dasm (-7.07 % of base)
        -200 : 3047.dasm (-19.69 % of base)
        -188 : 8846.dasm (-21.96 % of base)
        -184 : 67.dasm (-26.14 % of base)
        -184 : 457.dasm (-24.34 % of base)
        -176 : 3293.dasm (-27.85 % of base)
        -160 : 760.dasm (-17.62 % of base)
        -136 : 6085.dasm (-18.68 % of base)
        -136 : 2290.dasm (-30.63 % of base)
        -132 : 488.dasm (-19.76 % of base)
        -128 : 853.dasm (-27.12 % of base)
        -128 : 12798.dasm (-29.91 % of base)
        -128 : 470.dasm (-18.71 % of base)

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

Top method regressions (bytes):
          68 (8.99 % of base) : 6335.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) : 9500.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) : 4901.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) : 7121.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) : 9509.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          24 (6.25 % of base) : 9492.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          24 (11.32 % of base) : 9033.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          24 (23.08 % of base) : 5696.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) : 6087.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) : 2879.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) : 5727.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)
          12 (5.45 % of base) : 12754.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)
          12 (1.01 % of base) : 2882.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
           8 (1.36 % of base) : 2067.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
           4 (1.89 % of base) : 7629.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           4 (3.03 % of base) : 5725.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) : 4256.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) : 11710.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) : 9486.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) : 992.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) : 3040.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 (-7.52 % of base) : 2959.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (FullOpts)
        -212 (-12.62 % of base) : 3400.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)
        -204 (-7.07 % of base) : 11198.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -200 (-19.69 % of base) : 3047.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)
        -188 (-21.96 % of base) : 8846.dasm - System.Linq.Enumerable:TryGetLast[System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,System.__Canon]],byref):System.ValueTuple`2[System.__Canon,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) : 3293.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -160 (-17.62 % of base) : 760.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)
        -136 (-18.68 % of base) : 6085.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) : 2290.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) : 853.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) : 12798.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)

Top method regressions (percentages):
          24 (31.58 % of base) : 6087.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) : 5696.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) : 7121.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) : 5727.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) : 9500.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          24 (11.32 % of base) : 9033.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          68 (8.99 % of base) : 6335.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) : 9509.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) : 2879.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) : 9492.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)
          12 (5.45 % of base) : 12754.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)
          64 (5.39 % of base) : 4901.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) : 4256.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) : 11710.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) : 5725.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) : 7629.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:GetITypeSymbol(ubyte):Microsoft.CodeAnalysis.ITypeSymbol:this (FullOpts)
           8 (1.36 % of base) : 2067.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
          12 (1.01 % of base) : 2882.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):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) : 2212.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) : 2290.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -72 (-30.51 % of base) : 6770.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) : 12798.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
        -176 (-27.85 % of base) : 3293.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
        -128 (-27.12 % of base) : 853.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) : 2316.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) : 5715.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) : 3151.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) : 9486.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) : 3129.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) : 4968.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) : 2191.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -24 (-24.00 % of base) : 2350.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: 1662480 (overridden on cmd)
Total bytes of diff: 1645316 (overridden on cmd)
Total bytes of delta: -17164 (-1.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         124 : 6211.dasm (12.55 % of base)
          48 : 5862.dasm (10.62 % of base)
          48 : 5873.dasm (10.62 % of base)
          48 : 5883.dasm (10.81 % of base)
          48 : 5886.dasm (10.62 % of base)
          20 : 8921.dasm (13.51 % of base)
          16 : 5810.dasm (8.51 % of base)
           8 : 10375.dasm (3.03 % of base)
           8 : 10647.dasm (5.88 % of base)
           8 : 2050.dasm (4.26 % of base)
           4 : 12237.dasm (5.56 % of base)
           4 : 2282.dasm (1.59 % of base)
           4 : 4696.dasm (0.98 % of base)

Top file improvements (bytes):
        -328 : 9574.dasm (-29.29 % of base)
        -328 : 3244.dasm (-24.33 % of base)
        -228 : 8857.dasm (-28.22 % of base)
        -212 : 245.dasm (-30.99 % of base)
        -212 : 587.dasm (-33.12 % of base)
        -208 : 6046.dasm (-23.01 % of base)
        -208 : 7528.dasm (-23.42 % of base)
        -200 : 5123.dasm (-11.79 % of base)
        -188 : 12398.dasm (-23.86 % of base)
        -184 : 249.dasm (-24.34 % of base)
        -184 : 540.dasm (-26.14 % of base)
        -172 : 8240.dasm (-22.63 % of base)
        -172 : 9573.dasm (-18.53 % of base)
        -172 : 5225.dasm (-28.48 % of base)
        -164 : 4920.dasm (-22.04 % of base)
        -160 : 13749.dasm (-17.62 % of base)
        -152 : 9575.dasm (-14.02 % of base)
        -144 : 6206.dasm (-21.95 % of base)
        -144 : 9902.dasm (-24.16 % of base)
        -144 : 6006.dasm (-20.81 % of base)

68 total files with Code Size differences (55 improved, 13 regressed), 21 unchanged.

Top method regressions (bytes):
         124 (12.55 % of base) : 6211.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) : 5883.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) : 5886.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) : 5873.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) : 5862.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) : 8921.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) : 5810.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) : 10375.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) : 2050.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) : 10647.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) : 4696.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) : 2282.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) : 12237.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)

Top method improvements (bytes):
        -328 (-29.29 % of base) : 9574.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) : 3244.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) : 8857.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) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -208 (-23.01 % of base) : 6046.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) : 7528.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) : 5123.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) : 12398.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) : 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)
        -172 (-22.63 % of base) : 8240.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) : 9573.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) : 5225.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) : 4920.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) : 13749.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) : 9575.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) : 6006.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 (-24.16 % of base) : 9902.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) : 6206.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) : 8921.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) : 6211.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) : 5883.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) : 5886.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) : 5873.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) : 5862.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) : 5810.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) : 10647.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) : 12237.dasm - System.Convert:ToUInt64(System.Object):ulong (FullOpts)
           8 (4.26 % of base) : 2050.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) : 10375.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) : 2282.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) : 4696.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) : 8491.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) : 587.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         -60 (-32.61 % of base) : 10379.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -24 (-31.58 % of base) : 10875.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) : 7467.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) : 4714.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) : 4963.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) : 5641.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) : 9779.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) : 9574.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) : 5225.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) : 8953.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) : 8857.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) : 4706.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) : 5221.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -72 (-28.12 % of base) : 9915.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) : 9397.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) : 4589.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) : 4961.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 93,749 contexts (40,209 MinOpts, 53,540 FullOpts).

MISSED contexts: base: 3,301 (2.30%), diff: 45,642 (31.75%)

Overall (-98,879 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 918,586 -3,514
benchmarks.run.windows.x64.checked.mch 637,100 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 1,575,206 -12,251
benchmarks.run_tiered.windows.x64.checked.mch 1,518,103 -14,901
coreclr_tests.run.windows.x64.checked.mch 379,814 +12
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 1,540,227 -23,414
librariestestsnotieredcompilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779

MinOpts (-51,463 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 566,802 -3,837
benchmarks.run_pgo.windows.x64.checked.mch 1,172,226 -11,291
benchmarks.run_tiered.windows.x64.checked.mch 1,333,260 -13,988
coreclr_tests.run.windows.x64.checked.mch 289,459 +114
libraries_tests.run.windows.x64.Release.mch 1,489,732 -22,461

FullOpts (-47,416 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 351,784 +323
benchmarks.run.windows.x64.checked.mch 636,868 -4,369
benchmarks.run_pgo.windows.x64.checked.mch 402,980 -960
benchmarks.run_tiered.windows.x64.checked.mch 184,843 -913
coreclr_tests.run.windows.x64.checked.mch 90,355 -102
libraries.pmi.windows.x64.checked.mch 837,452 -17,566
libraries_tests.run.windows.x64.Release.mch 50,495 -953
librariestestsnotieredcompilation.run.windows.x64.Release.mch 745,455 -8,097
realworld.run.windows.x64.checked.mch 1,799,593 -14,779

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%) : 1904.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)

-39 (-29.10%) : 2658.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializerSystem.__Canon:ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)

@@ -7,68 +7,37 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 3, 3 ) ref -> rsi this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> -; V01 TypeCtx [V01,T00] ( 7, 5.56) long -> rbx single-def
+; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd single-def <ProtoBuf.Meta.RuntimeTypeModel> +; 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,T05] ( 3, 4 ) long -> rdi "spilling helperCall"
+; V03 tmp1 [V03,T03] ( 2, 4 ) long -> rdi "spilling helperCall"
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T08] ( 2, 4 ) long -> rbp "argument with side effect" -; V06 tmp4 [V06,T07] ( 2, 4 ) ref -> rdx single-def "argument with side effect" -; V07 rat0 [V07,T01] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" -; V08 rat1 [V08,T06] ( 3, 4 ) long -> rbp "runtime lookup" -; V09 rat2 [V09,T02] ( 3, 5.60) long -> rcx "spilling expr" -; V10 rat3 [V10,T04] ( 3, 4.48) long -> rbp "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T04] ( 2, 4 ) long -> rbx "argument with side effect" +; V06 tmp4 [V06,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M14728_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
- push rbp
push rbx
- sub rsp, 40 - mov qword ptr [rsp+0x20], rdx
+ sub rsp, 48 + mov qword ptr [rsp+0x28], rdx
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M14728_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rdi, qword ptr [rcx+0x10] - test rdi, rdi - je SHORT G_M14728_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M14728_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M14728_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M14728_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=1 PerfScore 4.75 +G_M14728_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 rdi, rax
- ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M14728_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M14728_IG08 - ;; size=11 bbWeight=1 PerfScore 6.00 -G_M14728_IG06: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rbp, qword ptr [rcx+0x18] - test rbp, rbp - je SHORT G_M14728_IG08 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M14728_IG07: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M14728_IG09 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M14728_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
; gcr arg pop 0
- mov rbp, rax - ;; size=21 bbWeight=0.36 PerfScore 0.63 -G_M14728_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov rbx, rax
mov rcx, rsi ; gcrRegs +[rcx] mov rdx, rdi @@ -78,22 +47,21 @@ G_M14728_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx]
- mov rcx, rbp - call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ mov rcx, rbx + call CORINFO_HELP_INITINSTCLASS
; gcrRegs -[rdx] ; gcr arg pop 0 nop
- ;; size=27 bbWeight=1 PerfScore 5.50 -G_M14728_IG10: ; bbWeight=1, epilog, nogc, extend - add rsp, 40
+ ;; size=69 bbWeight=1 PerfScore 9.00 +G_M14728_IG03: ; bbWeight=1, epilog, nogc, extend + add rsp, 48
pop rbx
- pop rbp
pop rsi pop rdi ret
- ;; size=9 bbWeight=1 PerfScore 3.25
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 134, prolog size 13, PerfScore 32.21, instruction count 42, allocated bytes for code 134 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 95, prolog size 12, PerfScore 16.50, instruction count 28, allocated bytes for code 95 (MethodHash=42b4c677) for method ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
; ============================================================ Unwind Info: @@ -101,13 +69,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x08 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- 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: 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)

-37 (-28.24%) : 6123.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:

+45 (+75.00%) : 672.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:

+45 (+75.00%) : 8508.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%) : 1507.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%) : 2628.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%) : 1628.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%) : 774.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%) : 14895.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,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: @@ -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%) : 15372.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)

+46 (+219.05%) : 14055.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:

benchmarks.run_tiered.windows.x64.checked.mch

-33 (-32.35%) : 18525.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.35%) : 1538.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%) : 1305.dasm - System.Linq.Enumerable:SingleOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -21,26 +21,11 @@ G_M27753_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_M27753_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_M27753_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M27753_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_M27753_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M27753_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27753_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_M27753_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_M27753_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx] +[rax] nop
- ;; size=19 bbWeight=1 PerfScore 5.75 -G_M27753_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=42 bbWeight=1 PerfScore 9.00 +G_M27753_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=f6189396) for method System.Linq.Enumerable:SingleOrDefault[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=f6189396) for method System.Linq.Enumerable:SingleOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (Tier0)
; ============================================================ Unwind Info:

+8 (+7.21%) : 2057.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)

+8 (+7.21%) : 19075.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)

+46 (+219.05%) : 5624.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

-22 (-31.43%) : 1375.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 Tier1)

@@ -8,14 +8,11 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) byref -> zero-ref this single-def
-; V01 TypeCtx [V01,T00] ( 5, 4.36) long -> rdx single-def -; V02 arg1 [V02,T02] ( 3, 3 ) byref -> rbx single-def
+; V01 TypeCtx [V01,T00] ( 4, 4 ) long -> rdx single-def +; V02 arg1 [V02,T01] ( 3, 3 ) byref -> rbx single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp2 [V05,T05] ( 2, 4 ) long -> rcx "argument with side effect" -; V06 rat0 [V06,T04] ( 3, 4 ) long -> rcx "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rcx "spilling expr" -; V08 rat2 [V08,T03] ( 3, 4.48) long -> rcx "fgMakeTemp is creating a new local variable"
+; V05 tmp2 [V05,T02] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 @@ -26,38 +23,23 @@ G_M49756_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, r8 ; byrRegs +[rbx] ;; size=13 bbWeight=1 PerfScore 2.50
-G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rcx, qword ptr [rdx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M49756_IG05 - ;; size=11 bbWeight=1 PerfScore 6.00 -G_M49756_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - mov rcx, qword ptr [rcx+0x18] - test rcx, rcx - je SHORT G_M49756_IG05 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M49756_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M49756_IG06 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M49756_IG05: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M49756_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rcx, rdx 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.36 PerfScore 0.63 -G_M49756_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rdx, rbx ; byrRegs +[rdx]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M49756_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 2.00 +G_M49756_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 70, prolog size 13, PerfScore 16.01, instruction count 19, 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 Tier1)
+; Total bytes of code 48, prolog size 13, PerfScore 7.25, instruction count 12, allocated bytes for code 48 (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 Tier1)
; ============================================================ Unwind Info:

-33 (-29.73%) : 870.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov gword ptr [rbp+0x18], rdx mov gword ptr [rbp+0x20], r8 ;; size=26 bbWeight=1 PerfScore 5.75
-G_M305_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_M305_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M305_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_M305_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M305_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_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea r9, [rbp-0x10] mov rcx, qword ptr [rbp-0x18] mov rdx, gword ptr [rbp+0x18] @@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx r8] +[rax] nop
- ;; size=23 bbWeight=1 PerfScore 6.75 -G_M305_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=46 bbWeight=1 PerfScore 10.00 +G_M305_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:

-33 (-29.73%) : 3024.dasm - System.Linq.Enumerable:FirstOrDefaultSystem.__Canon:System.__Canon (Tier0)

@@ -23,26 +23,11 @@ G_M305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n mov gword ptr [rbp+0x18], rdx mov gword ptr [rbp+0x20], r8 ;; size=26 bbWeight=1 PerfScore 5.75
-G_M305_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_M305_IG04 - ;; size=15 bbWeight=1 PerfScore 7.00 -G_M305_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_M305_IG05 - ;; size=18 bbWeight=0.80 PerfScore 6.40 -G_M305_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M305_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_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea r9, [rbp-0x10] mov rcx, qword ptr [rbp-0x18] mov rdx, gword ptr [rbp+0x18] @@ -52,14 +37,14 @@ G_M305_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref call [<unknown method>] ; gcrRegs -[rdx r8] +[rax] nop
- ;; size=23 bbWeight=1 PerfScore 6.75 -G_M305_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=46 bbWeight=1 PerfScore 10.00 +G_M305_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbp ret ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 14, PerfScore 28.30, instruction count 29, allocated bytes for code 111 (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 78, prolog size 14, PerfScore 17.50, instruction count 20, allocated bytes for code 78 (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:

+46 (+82.14%) : 1591.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)

@@ -13,6 +13,8 @@ ; V02 tmp1 [V02,T01] ( 4, 2.99) long -> rsi "Inline stloc first use temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V05 tmp4 [V05,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V06 tmp5 [V06,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -39,16 +41,26 @@ G_M56886_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi
+ 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=14 bbWeight=1 PerfScore 12.33
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=60 bbWeight=1 PerfScore 26.83
G_M56886_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 56, prolog size 9, PerfScore 27.17, instruction count 18, allocated bytes for code 56 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
+ +; Total bytes of code 102, prolog size 9, PerfScore 41.67, instruction count 24, allocated bytes for code 102 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
; ============================================================ Unwind Info:

+46 (+219.05%) : 1841.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%) : 1396.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:

libraries.pmi.windows.x64.checked.mch

-37 (-64.91%) : 20223.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector1[long]):System.Numerics.Vector1double

@@ -5,18 +5,12 @@ ; rsp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rcx single-def ; V01 arg0 [V01,T00] ( 3, 6 ) byref -> rdx single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument" -;* V04 tmp2 [V04 ] ( 0, 0 ) simd32 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]> -;* V05 tmp3 [V05 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[int]> -;* V06 tmp4 [V06 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[long]> -;* V07 tmp5 [V07 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[double]> -; V08 cse0 [V08,T02] ( 3, 3 ) simd32 -> mm0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,27 +19,17 @@ G_M18713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=3 bbWeight=1 PerfScore 1.00 G_M18713_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref ; byrRegs +[rcx rdx]
- vmovups ymm0, ymmword ptr [rdx] - vpsrlq ymm1, ymm0, 32 - vpxorq ymm1, ymm1, qword ptr [reloc @RWD00] {1to4} - vsubpd ymm1, ymm1, qword ptr [reloc @RWD08] {1to4} - vpblendd ymm0, ymm0, ymmword ptr [reloc @RWD32], -86 - vaddpd ymm0, ymm0, ymm1
+ vcvtqq2pd ymm0, ymmword ptr [rdx]
vmovups ymmword ptr [rcx], ymm0 mov rax, rcx ; byrRegs +[rax]
- ;; size=50 bbWeight=1 PerfScore 22.25
+ ;; size=13 bbWeight=1 PerfScore 8.25
G_M18713_IG03: ; bbWeight=1, epilog, nogc, extend vzeroupper ret ;; size=4 bbWeight=1 PerfScore 2.00
-RWD00 dq 4530000080000000h -RWD08 dq 4530000080100000h ; 1.93428223e+25 -RWD16 dd 00000000h, 00000000h, 00000000h, 00000000h -RWD32 dq 4330000000000000h, 4330000000000000h, 4330000000000000h, 4330000000000000h
- -; Total bytes of code 57, prolog size 3, PerfScore 25.25, instruction count 11, allocated bytes for code 57 (MethodHash=94cdb6e6) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts)
+; Total bytes of code 20, prolog size 3, PerfScore 11.25, instruction count 6, allocated bytes for code 20 (MethodHash=94cdb6e6) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts)
; ============================================================ Unwind Info:

-37 (-64.91%) : 20224.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector1[ulong]):System.Numerics.Vector1double

@@ -5,18 +5,12 @@ ; rsp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rcx single-def ; V01 arg0 [V01,T00] ( 3, 6 ) byref -> rdx single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument" -;* V04 tmp2 [V04 ] ( 0, 0 ) simd32 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]> -;* V05 tmp3 [V05 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[uint]> -;* V06 tmp4 [V06 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[ulong]> -;* V07 tmp5 [V07 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[double]> -; V08 cse0 [V08,T02] ( 3, 3 ) simd32 -> mm0 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -25,27 +19,17 @@ G_M56524_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=3 bbWeight=1 PerfScore 1.00 G_M56524_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref ; byrRegs +[rcx rdx]
- vmovups ymm0, ymmword ptr [rdx] - vpsrlq ymm1, ymm0, 32 - vpxorq ymm1, ymm1, qword ptr [reloc @RWD00] {1to4} - vsubpd ymm1, ymm1, qword ptr [reloc @RWD08] {1to4} - vpblendd ymm0, ymm0, ymmword ptr [reloc @RWD32], -86 - vaddpd ymm0, ymm0, ymm1
+ vcvtuqq2pd ymm0, ymmword ptr [rdx]
vmovups ymmword ptr [rcx], ymm0 mov rax, rcx ; byrRegs +[rax]
- ;; size=50 bbWeight=1 PerfScore 22.25
+ ;; size=13 bbWeight=1 PerfScore 8.25
G_M56524_IG03: ; bbWeight=1, epilog, nogc, extend vzeroupper ret ;; size=4 bbWeight=1 PerfScore 2.00
-RWD00 dq 4530000000000000h -RWD08 dq 4530000000100000h ; 1.93428131e+25 -RWD16 dd 00000000h, 00000000h, 00000000h, 00000000h -RWD32 dq 4330000000000000h, 4330000000000000h, 4330000000000000h, 4330000000000000h
- -; Total bytes of code 57, prolog size 3, PerfScore 25.25, instruction count 11, allocated bytes for code 57 (MethodHash=23b22333) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (FullOpts)
+; Total bytes of code 20, prolog size 3, PerfScore 11.25, instruction count 6, allocated bytes for code 20 (MethodHash=23b22333) for method System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (FullOpts)
; ============================================================ Unwind Info:

-43 (-32.82%) : 8481.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:

+35 (+194.44%) : 17369.dasm - System.Int32:CreateCheckeddouble:int (FullOpts)

@@ -8,30 +8,37 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def
+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def
; V01 loc0 [V01,T00] ( 2, 2 ) int -> rax ld-addr-op
-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M35796_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
vzeroupper
- ;; size=7 bbWeight=1 PerfScore 1.25
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M35796_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_DBL2INT_OVF - ; gcr arg pop 0 - nop - ;; size=6 bbWeight=1 PerfScore 1.25
+ vfixupimmsd xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmppd xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32] + vcvttsd2si eax, xmm0 + vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1 + ;; size=49 bbWeight=1 PerfScore 20.50
G_M35796_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=1 bbWeight=1 PerfScore 1.00 +RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 41DFFFFFFFC00000h, 41DFFFFFFFC00000h +RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=aa74742b) for method System.Int32:CreateChecked[double](double):int (FullOpts)
+ +; Total bytes of code 53, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 53 (MethodHash=aa74742b) for method System.Int32:CreateChecked[double](double):int (FullOpts)
; ============================================================ Unwind Info: @@ -39,9 +46,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+37 (+205.56%) : 17617.dasm - System.IntPtr:CreateChecked[double](double):long (FullOpts)
@@ -8,30 +8,37 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def
+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def
; V01 loc0 [V01,T00] ( 2, 2 ) long -> rax ld-addr-op
-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M45338_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
vzeroupper
- ;; size=7 bbWeight=1 PerfScore 1.25
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M45338_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_DBL2LNG_OVF - ; gcr arg pop 0 - nop - ;; size=6 bbWeight=1 PerfScore 1.25
+ 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 + vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=51 bbWeight=1 PerfScore 20.50
G_M45338_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=1 bbWeight=1 PerfScore 1.00 +RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=ad314ee5) for method System.IntPtr:CreateChecked[double](double):long (FullOpts)
+ +; Total bytes of code 55, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 55 (MethodHash=ad314ee5) for method System.IntPtr:CreateChecked[double](double):long (FullOpts)
; ============================================================ Unwind Info: @@ -39,9 +46,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+37 (+205.56%) : 17416.dasm - System.Int64:CreateChecked[double](double):long (FullOpts)
@@ -8,30 +8,37 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 3, 3 ) double -> mm0 single-def
+; V00 arg0 [V00,T01] ( 4, 4 ) double -> mm0 single-def
; V01 loc0 [V01,T00] ( 2, 2 ) long -> rax ld-addr-op
-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V04 tmp2 [V04 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp" ;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp4 [V06,T02] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M23790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
vzeroupper
- ;; size=7 bbWeight=1 PerfScore 1.25
+ ;; size=3 bbWeight=1 PerfScore 1.00
G_M23790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_DBL2LNG_OVF - ; gcr arg pop 0 - nop - ;; size=6 bbWeight=1 PerfScore 1.25
+ 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 + vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=51 bbWeight=1 PerfScore 20.50
G_M23790_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=1 bbWeight=1 PerfScore 1.00 +RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 18, prolog size 7, PerfScore 3.75, instruction count 6, allocated bytes for code 18 (MethodHash=872ea311) for method System.Int64:CreateChecked[double](double):long (FullOpts)
+ +; Total bytes of code 55, prolog size 3, PerfScore 22.50, instruction count 9, allocated bytes for code 55 (MethodHash=872ea311) for method System.Int64:CreateChecked[double](double):long (FullOpts)
; ============================================================ Unwind Info: @@ -39,9 +46,8 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x04 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00 + CountOfUnwindCodes: 0
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
libraries_tests.run.windows.x64.Release.mch
-33 (-36.26%) : 3786.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (Instrumented Tier0)
@@ -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] (Instrumented 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] (Instrumented Tier0)
; ============================================================ Unwind Info:

-33 (-36.26%) : 175.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%) : 4435.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:

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

@@ -9,93 +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.36) 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,T07] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "spilling expr" -; V11 rat2 [V11,T06] ( 3, 4.48) 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 - mov rcx, qword ptr [rdx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M58319_IG05 - ;; size=19 bbWeight=1 PerfScore 9.25 -G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax] - mov rcx, qword ptr [rcx+0x18] - test rcx, rcx - je SHORT G_M58319_IG05 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M58319_IG05: ; bbWeight=0.36, 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.36 PerfScore 0.63 -G_M58319_IG06: ; 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_IG07: ; 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 118, prolog size 12, PerfScore 26.51, instruction count 37, allocated bytes for code 118 (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: @@ -103,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)

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

@@ -9,93 +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.36) 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,T07] ( 3, 4 ) long -> rcx "runtime lookup" -; V10 rat1 [V10,T04] ( 3, 5.60) long -> rcx "spilling expr" -; V11 rat2 [V11,T06] ( 3, 4.48) 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 - mov rcx, qword ptr [rdx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M58319_IG05 - ;; size=19 bbWeight=1 PerfScore 9.25 -G_M58319_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - ; gcrRegs -[rax] - mov rcx, qword ptr [rcx+0x18] - test rcx, rcx - je SHORT G_M58319_IG05 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M58319_IG04: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz - jmp SHORT G_M58319_IG06 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M58319_IG05: ; bbWeight=0.36, 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.36 PerfScore 0.63 -G_M58319_IG06: ; 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_IG07: ; 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 118, prolog size 12, PerfScore 26.51, instruction count 37, allocated bytes for code 118 (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: @@ -103,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)

+17 (+6.12%) : 3832.dasm - System.Linq.Enumerable:gEnumerableToArray|296_0System.__Canon:System.Canon

@@ -8,13 +8,13 @@ ; 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 -> rbx single-def -; V01 arg0 [V01,T05] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 TypeCtx [V00,T00] ( 8, 8 ) long -> rbx single-def +; V01 arg0 [V01,T03] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02 ] ( 1, 1 ) struct (64) [rsp+0x138] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon]> ; V03 loc1 [V03 ] ( 5, 5 ) struct (264) [rsp+0x30] 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 -> rbx class-hnd single-def <System.__Canon[]>
+; V04 loc2 [V04,T08] ( 2, 2 ) ref -> rsi class-hnd single-def <System.__Canon[]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+; V06 tmp1 [V06,T04] ( 2, 4 ) long -> rdi "spilling helperCall"
;* V07 tmp2 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V08 tmp3 [V08 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]> ;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -25,16 +25,9 @@ ; V14 tmp9 [V14,T02] ( 3, 6 ) int -> [rsp+0x28] do-not-enreg[H] hidden-struct-arg "field V08._length (fldOffset=0x8)" P-DEP ;* 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,T10] ( 2, 4 ) long -> rdx "argument with side effect" -; V18 tmp13 [V18,T11] ( 2, 4 ) long -> rdx "argument with side effect" -; V19 tmp14 [V19,T12] ( 2, 4 ) long -> rdx "argument with side effect" -; V20 tmp15 [V20,T13] ( 2, 4 ) long -> rdx "argument with side effect" -; V21 cse0 [V21,T07] ( 4, 4 ) long -> rdi "CSE - aggressive" -; V22 rat0 [V22,T08] ( 3, 4 ) long -> rdx "runtime lookup" -; V23 rat1 [V23,T03] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable" -; V24 rat2 [V24,T09] ( 3, 4 ) long -> rdi "runtime lookup" -; V25 rat3 [V25,T04] ( 3, 5.60) long -> rcx "spilling expr" -; V26 rat4 [V26,T06] ( 3, 4.48) long -> rdi "fgMakeTemp is creating a new local variable"
+; V17 tmp12 [V17,T05] ( 2, 4 ) long -> rdx "argument with side effect" +; V18 tmp13 [V18,T06] ( 2, 4 ) long -> rdx "argument with side effect" +; V19 tmp14 [V19,T07] ( 2, 4 ) long -> rdx "argument with side effect"
; ; Lcl frame size = 384 @@ -57,81 +50,67 @@ G_M19942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rsi, rdx ; gcrRegs +[rsi] ;; size=82 bbWeight=1 PerfScore 14.58
-G_M19942_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rcx, qword ptr [rbx+0x38] - mov rdx, qword ptr [rcx+0x10] - test rdx, rdx - je SHORT G_M19942_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M19942_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19942_IG05 - ;; size=2 bbWeight=0.80 PerfScore 1.60 -G_M19942_IG04: ; bbWeight=0.20, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M19942_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 rdi, rax + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY
; gcr arg pop 0
- mov rdx, rax - ;; size=21 bbWeight=0.20 PerfScore 0.35 -G_M19942_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
lea rcx, [rsp+0x20] lea r8, [rsp+0x138]
+ mov rdx, rdi
mov r9d, 8 call [<PrivateImplementationDetails>:InlineArrayAsSpan[System.Collections.Generic.SegmentedArrayBuilder`1+ScratchBuffer[System.__Canon],System.__Canon](byref,int):System.Span`1[System.__Canon]] ; gcr arg pop 0
- ;; size=25 bbWeight=1 PerfScore 4.25 -G_M19942_IG06: ; bbWeight=1, nogc, extend
+ ;; size=67 bbWeight=1 PerfScore 7.75 +G_M19942_IG03: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x20] vmovdqu xmmword ptr [rsp+0x118], xmm0 ;; size=15 bbWeight=1 PerfScore 4.00
-G_M19942_IG07: ; bbWeight=1, nogc, extend
+G_M19942_IG04: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rsp+0x20] vmovdqu xmmword ptr [rsp+0x128], xmm0 ;; size=15 bbWeight=1 PerfScore 4.00
-G_M19942_IG08: ; bbWeight=1, isz, extend - mov rcx, qword ptr [rbx+0x38] - cmp qword ptr [rcx+0x08], 24 - jle SHORT G_M19942_IG11 - ;; size=11 bbWeight=1 PerfScore 6.00 -G_M19942_IG09: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - mov rdi, qword ptr [rcx+0x18] - test rdi, rdi - je SHORT G_M19942_IG11 - ;; size=9 bbWeight=0.80 PerfScore 2.60 -G_M19942_IG10: ; bbWeight=0.64, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19942_IG12 - ;; size=2 bbWeight=0.64 PerfScore 1.28 -G_M19942_IG11: ; bbWeight=0.36, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M19942_IG05: ; bbWeight=1, extend
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_M19942_IG12: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - mov rdx, rdi
+ mov rdx, rax
lea rcx, [rsp+0x30] mov r8, rsi ; gcrRegs +[r8] call [<unknown method>] ; gcrRegs -[rsi r8] ; gcr arg pop 0
- mov rdx, rdi
+ mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY + ; gcr arg pop 0 + mov rdx, rax
lea rcx, [rsp+0x30] call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToArray():System.__Canon[]:this] ; gcrRegs +[rax] ; gcr arg pop 0
- mov rbx, rax - ; gcrRegs +[rbx] - mov rdx, rdi - lea rcx, [rsp+0x30] - call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this]
+ mov rsi, rax + ; gcrRegs +[rsi] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_MEMCPY
; gcrRegs -[rax] ; gcr arg pop 0
- mov rax, rbx
+ mov rdx, rax + lea rcx, [rsp+0x30] + call [System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:Dispose():this] + ; gcr arg pop 0 + mov rax, rsi
; gcrRegs +[rax]
- ;; size=51 bbWeight=1 PerfScore 12.00 -G_M19942_IG13: ; bbWeight=1, epilog, nogc, extend
+ ;; size=105 bbWeight=1 PerfScore 16.50 +G_M19942_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 384 pop rbx pop rsi @@ -139,7 +118,7 @@ G_M19942_IG13: ; bbWeight=1, epilog, nogc, extend ret ;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 278, prolog size 76, PerfScore 59.29, instruction count 61, allocated bytes for code 278 (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 295, prolog size 76, PerfScore 49.58, instruction count 58, allocated bytes for code 295 (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:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-18 (-32.73%) : 3441.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%) : 3322.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%) : 8265.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CastSystem.Canon,System.Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -7,14 +7,12 @@ ; 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 arg0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`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,T03] ( 2, 2 ) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP -; V05 tmp3 [V05,T04] ( 2, 4 ) long -> rcx "argument with side effect" -; V06 rat0 [V06,T02] ( 3, 4 ) long -> rcx "runtime lookup" -; V07 rat1 [V07,T01] ( 3, 5.60) long -> rax "fgMakeTemp is creating a new local variable"
+; V04 tmp2 [V04,T01] ( 2, 2 ) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP +; V05 tmp3 [V05,T02] ( 2, 4 ) long -> rcx "argument with side effect"
; ; Lcl frame size = 48 @@ -25,34 +23,22 @@ G_M45198_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdx ; gcrRegs +[rbx] ;; size=13 bbWeight=1 PerfScore 2.50
-G_M45198_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdx, qword ptr [rcx+0x38] - mov rax, qword ptr [rdx+0x18] - test rax, rax - je SHORT G_M45198_IG04 - ;; size=13 bbWeight=1 PerfScore 5.25 -G_M45198_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rcx, rax - jmp SHORT G_M45198_IG05 - ;; size=5 bbWeight=0.80 PerfScore 1.80 -G_M45198_IG04: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M45198_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_M45198_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx ; gcrRegs +[rdx]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M45198_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=21 bbWeight=1 PerfScore 1.75 +G_M45198_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48 pop rbx tail.jmp [System.Collections.Immutable.ImmutableArray`1[System.__Canon]:CastUp[System.__Canon](System.Collections.Immutable.ImmutableArray`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=dd534f71) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`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=dd534f71) for method Microsoft.CodeAnalysis.ImmutableArrayExtensions:Cast[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

+13 (+20.31%) : 7398.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%) : 831.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:

+45 (+20.55%) : 2828.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%) : 8726.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%) : 10213.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:

-18 (-32.73%) : 13701.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:

+46 (+82.14%) : 14865.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)

@@ -13,6 +13,8 @@ ; V02 tmp1 [V02,T01] ( 4, 3 ) long -> rsi "Inline stloc first use temp" ;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
+; V05 tmp4 [V05,T02] ( 3, 6 ) double -> mm0 "fgMakeTemp is creating a new local variable" +; V06 tmp5 [V06,T03] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -39,16 +41,26 @@ G_M56886_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rsi
+ 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=14 bbWeight=1 PerfScore 12.33
+ vpbroadcastq xmm0, rax + vpternlogq xmm1, xmm2, xmm0, -54 + vmovd rax, xmm1 + ;; size=60 bbWeight=1 PerfScore 26.83
G_M56886_IG05: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 43E0000000000000h, 43E0000000000000h +RWD32 dq 7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
-; Total bytes of code 56, prolog size 9, PerfScore 27.21, instruction count 18, allocated bytes for code 56 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
+ +; Total bytes of code 102, prolog size 9, PerfScore 41.71, instruction count 24, allocated bytes for code 102 (MethodHash=bfe421c9) for method System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
; ============================================================ Unwind Info:

+45 (+118.42%) : 15773.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)

@@ -8,13 +8,15 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 3 ) float -> mm0 single-def -; V01 arg1 [V01,T05] ( 3, 3 ) float -> mm1 single-def
+; V00 arg0 [V00,T06] ( 3, 3 ) float -> mm0 single-def +; V01 arg1 [V01,T07] ( 3, 3 ) float -> mm1 single-def
; V02 arg2 [V02,T02] ( 4, 3 ) int -> r8 single-def ; V03 arg3 [V03,T01] ( 4, 3.50) int -> r9 single-def ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 3, 2 ) int -> r9 "Inline return value spill temp" ; V06 tmp2 [V06,T00] ( 4, 6 ) int -> rax "Inlining Arg"
+; V07 tmp3 [V07,T04] ( 3, 6 ) float -> mm0 "fgMakeTemp is creating a new local variable" +; V08 tmp4 [V08,T05] ( 3, 6 ) simd16 -> mm0 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,10 +26,16 @@ G_M33552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M33552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz vaddss xmm0, xmm1, xmm0 vroundss xmm0, xmm0, xmm0, 9
+ vfixupimmss xmm0, xmm0, xmmword ptr [reloc @RWD00], 0 + vcmpps xmm1, xmm0, xmmword ptr [reloc @RWD16], 13 + vmovups xmm2, xmmword ptr [reloc @RWD32]
vcvttss2si eax, xmm0
+ vpbroadcastd xmm0, eax + vpternlogd xmm1, xmm2, xmm0, -54 + vmovd eax, xmm1
cmp eax, r9d jle SHORT G_M33552_IG04
- ;; size=19 bbWeight=1 PerfScore 17.25
+ ;; size=64 bbWeight=1 PerfScore 31.75
G_M33552_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M33552_IG05 ;; size=2 bbWeight=0.50 PerfScore 1.00 @@ -42,8 +50,12 @@ G_M33552_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M33552_IG06: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
+RWD00 dq 0000000000000088h, 0000000000000000h +RWD16 dq 4F0000004F000000h, 4F0000004F000000h +RWD32 dq 7FFFFFFF7FFFFFFFh, 7FFFFFFF7FFFFFFFh
-; Total bytes of code 38, prolog size 3, PerfScore 20.88, instruction count 12, allocated bytes for code 38 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
+ +; Total bytes of code 83, prolog size 3, PerfScore 35.38, instruction count 18, allocated bytes for code 83 (MethodHash=7c9e7cef) for method SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+46 (+219.05%) : 4684.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,572 95 29 1,448 -5,490 +1,976
benchmarks.run.windows.x64.checked.mch 1,288 110 15 1,163 -5,215 +846
benchmarks.run_pgo.windows.x64.checked.mch 2,171 190 22 1,959 -13,458 +1,207
benchmarks.run_tiered.windows.x64.checked.mch 2,466 210 17 2,239 -16,141 +1,240
coreclr_tests.run.windows.x64.checked.mch 286 45 52 189 -543 +555
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 4,875 623 64 4,188 -19,658 +2,092
libraries_tests.run.windows.x64.Release.mch 2,865 329 4 2,532 -23,620 +206
librariestestsnotieredcompilation.run.windows.x64.Release.mch 1,781 163 22 1,596 -8,594 +497
realworld.run.windows.x64.checked.mch 6,457 374 30 6,053 -16,461 +1,682
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
23,761 2,139 255 21,367 -109,180 +10,301

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 7,966 5,329 2,637 188 (1.51%) 4,114 (32.98%)
benchmarks.run.windows.x64.checked.mch 4,173 2 4,171 361 (4.51%) 3,436 (42.92%)
benchmarks.run_pgo.windows.x64.checked.mch 12,614 10,535 2,079 88 (0.48%) 5,202 (28.56%)
benchmarks.run_tiered.windows.x64.checked.mch 13,384 11,178 2,206 85 (0.47%) 4,493 (24.59%)
coreclr_tests.run.windows.x64.checked.mch 2,040 1,284 756 42 (0.98%) 1,836 (42.98%)
libraries.crossgen2.windows.x64.checked.mch 8,131 8 8,123 0 (0.00%) 3,083 (26.55%)
libraries.pmi.windows.x64.checked.mch 14,125 0 14,125 416 (2.10%) 5,325 (26.83%)
libraries_tests.run.windows.x64.Release.mch 12,309 11,871 438 28 (0.16%) 4,698 (27.00%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 5,124 0 5,124 737 (7.60%) 4,170 (43.03%)
realworld.run.windows.x64.checked.mch 10,895 0 10,895 1,188 (7.49%) 4,564 (28.79%)
smoke_tests.nativeaot.windows.x64.checked.mch 2,988 2 2,986 168 (2.07%) 4,721 (58.25%)
93,749 40,209 53,540 3,301 (2.30%) 45,642 (31.75%)

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: 918586 (overridden on cmd)
Total bytes of diff: 915072 (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 : 1419.dasm (68.66 % of base)
          92 : 8371.dasm (65.25 % of base)
          80 : 14288.dasm (121.21 % of base)
          80 : 7890.dasm (103.90 % of base)
          80 : 4657.dasm (103.90 % of base)
          80 : 5132.dasm (57.55 % of base)
          75 : 13444.dasm (60.00 % of base)
          74 : 3873.dasm (47.13 % of base)
          72 : 5929.dasm (72.00 % of base)
          72 : 5145.dasm (53.33 % 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 : 136.dasm (-14.44 % of base)
        -132 : 2988.dasm (-25.05 % of base)
        -132 : 5782.dasm (-26.19 % of base)
        -132 : 10605.dasm (-14.44 % of base)
        -103 : 4878.dasm (-24.52 % of base)
         -99 : 4131.dasm (-27.20 % of base)
         -99 : 2980.dasm (-33.67 % of base)
         -99 : 4018.dasm (-25.98 % 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)
         -70 : 3030.dasm (-26.92 % of base)
         -66 : 10604.dasm (-33.85 % of base)
         -66 : 134.dasm (-33.85 % 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) : 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)
        -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)
        -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) : 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)
         -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)
        -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) : 10595.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) : 126.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: 637100 (overridden on cmd)
Total bytes of diff: 632731 (overridden on cmd)
Total bytes of delta: -4369 (-0.69 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         177 : 3829.dasm (17.12 % of base)
         133 : 7056.dasm (81.60 % of base)
          91 : 933.dasm (74.59 % of base)
          56 : 1576.dasm (7.88 % of base)
          54 : 6490.dasm (38.30 % of base)
          50 : 2967.dasm (38.46 % of base)
          46 : 1507.dasm (219.05 % of base)
          46 : 2964.dasm (56.79 % of base)
          45 : 6702.dasm (4.44 % of base)
          45 : 672.dasm (75.00 % of base)
          45 : 8508.dasm (75.00 % of base)
          32 : 4955.dasm (53.33 % of base)
          17 : 7097.dasm (5.99 % of base)
           6 : 1055.dasm (3.82 % of base)
           3 : 1632.dasm (1.38 % of base)

Top file improvements (bytes):
        -270 : 3330.dasm (-23.22 % of base)
        -219 : 4626.dasm (-18.34 % of base)
        -208 : 3736.dasm (-17.84 % of base)
        -177 : 233.dasm (-33.27 % of base)
        -177 : 8069.dasm (-33.27 % of base)
        -171 : 579.dasm (-34.20 % of base)
        -152 : 237.dasm (-25.12 % of base)
        -152 : 8073.dasm (-25.12 % of base)
        -151 : 531.dasm (-25.00 % of base)
        -126 : 2389.dasm (-28.25 % of base)
        -111 : 462.dasm (-20.71 % of base)
        -104 : 5108.dasm (-17.30 % of base)
        -102 : 4568.dasm (-29.06 % of base)
         -92 : 5199.dasm (-26.29 % of base)
         -91 : 2938.dasm (-25.42 % of base)
         -83 : 1559.dasm (-25.08 % of base)
         -83 : 202.dasm (-22.80 % of base)
         -70 : 2523.dasm (-21.34 % of base)
         -63 : 1627.dasm (-28.51 % of base)
         -63 : 5789.dasm (-29.30 % of base)

43 total files with Code Size differences (28 improved, 15 regressed), 25 unchanged.

Top method regressions (bytes):
         177 (17.12 % of base) : 3829.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
         133 (81.60 % of base) : 7056.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
          91 (74.59 % of base) : 933.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          56 (7.88 % of base) : 1576.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          54 (38.30 % of base) : 6490.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
          50 (38.46 % of base) : 2967.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          46 (219.05 % of base) : 1507.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          46 (56.79 % of base) : 2964.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          45 (4.44 % of base) : 6702.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
          45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          45 (75.00 % of base) : 8508.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          32 (53.33 % of base) : 4955.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          17 (5.99 % of base) : 7097.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) : 1055.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           3 (1.38 % of base) : 1632.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
        -270 (-23.22 % of base) : 3330.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) : 4626.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) : 3736.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)
        -177 (-33.27 % of base) : 8069.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) : 579.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)
        -152 (-25.12 % of base) : 8073.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-25.00 % of base) : 531.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) : 2389.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) : 462.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -104 (-17.30 % of base) : 5108.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) : 4568.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -92 (-26.29 % of base) : 5199.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -91 (-25.42 % of base) : 2938.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
         -83 (-25.08 % of base) : 1559.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[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) : 2523.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) : 5789.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) : 1627.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          46 (219.05 % of base) : 1507.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
         133 (81.60 % of base) : 7056.dasm - Benchstone.BenchF.Trap:Test():ubyte:this (FullOpts)
          45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          45 (75.00 % of base) : 8508.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (74.59 % of base) : 933.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          46 (56.79 % of base) : 2964.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (FullOpts)
          32 (53.33 % of base) : 4955.dasm - Utf8Json.Internal.ThreadsafeTypeKeyHashTable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:CalculateCapacity(int,float):int (FullOpts)
          50 (38.46 % of base) : 2967.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (FullOpts)
          54 (38.30 % of base) : 6490.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
         177 (17.12 % of base) : 3829.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
          56 (7.88 % of base) : 1576.dasm - System.Collections.Perf_FrozenDictionary_String:ToImmutableDictionary():System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]:this (FullOpts)
          17 (5.99 % of base) : 7097.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)
          45 (4.44 % of base) : 6702.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (FullOpts)
           6 (3.82 % of base) : 1055.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
           3 (1.38 % of base) : 1632.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) : 579.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)
        -177 (-33.27 % of base) : 8069.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) : 1904.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (FullOpts)
         -63 (-29.30 % of base) : 5789.dasm - System.Linq.Enumerable:Take[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -39 (-29.10 % of base) : 2658.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (FullOpts)
        -102 (-29.06 % of base) : 4568.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -63 (-28.51 % of base) : 1627.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) : 2389.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) : 6123.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (FullOpts)
         -37 (-27.41 % of base) : 5857.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (FullOpts)
         -37 (-27.21 % of base) : 1630.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         -92 (-26.29 % of base) : 5199.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
         -59 (-25.43 % of base) : 5418.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)
         -91 (-25.42 % of base) : 2938.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (FullOpts)
         -18 (-25.35 % of base) : 1558.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[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)
        -152 (-25.12 % of base) : 8073.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
         -83 (-25.08 % of base) : 1559.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (FullOpts)
         -37 (-25.00 % of base) : 2289.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[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: 1575206 (overridden on cmd)
Total bytes of diff: 1562955 (overridden on cmd)
Total bytes of delta: -12251 (-0.78 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         143 : 1907.dasm (97.28 % of base)
         138 : 3226.dasm (87.34 % of base)
         101 : 11199.dasm (12.87 % of base)
          99 : 10319.dasm (6.31 % of base)
          89 : 12276.dasm (9.02 % of base)
          80 : 13435.dasm (103.90 % of base)
          80 : 8900.dasm (103.90 % of base)
          74 : 1723.dasm (54.01 % of base)
          72 : 6102.dasm (78.26 % of base)
          72 : 10669.dasm (56.25 % of base)
          71 : 16391.dasm (34.80 % of base)
          71 : 1890.dasm (112.70 % of base)
          46 : 14055.dasm (219.05 % of base)
           8 : 12710.dasm (7.21 % of base)
           8 : 14895.dasm (7.21 % of base)
           8 : 15372.dasm (7.21 % of base)
           8 : 17202.dasm (7.21 % of base)
           8 : 18334.dasm (7.21 % of base)
           8 : 5503.dasm (7.21 % of base)
           8 : 6350.dasm (7.21 % of base)

Top file improvements (bytes):
        -457 : 1644.dasm (-49.25 % of base)
        -425 : 769.dasm (-46.65 % of base)
        -404 : 775.dasm (-40.28 % of base)
        -400 : 9202.dasm (-38.50 % of base)
        -389 : 1554.dasm (-42.19 % of base)
        -333 : 15198.dasm (-39.83 % of base)
        -313 : 5344.dasm (-41.68 % of base)
        -307 : 5910.dasm (-33.15 % of base)
        -288 : 9861.dasm (-41.56 % of base)
        -276 : 1379.dasm (-32.13 % of base)
        -258 : 5114.dasm (-39.94 % of base)
        -240 : 9334.dasm (-42.93 % of base)
        -210 : 271.dasm (-34.37 % of base)
        -195 : 9338.dasm (-36.31 % of base)
        -189 : 5310.dasm (-33.69 % of base)
        -186 : 10686.dasm (-20.00 % of base)
        -181 : 660.dasm (-31.42 % of base)
        -162 : 1627.dasm (-34.03 % of base)
        -145 : 7087.dasm (-31.39 % of base)
        -141 : 3470.dasm (-34.81 % of base)

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

Top method regressions (bytes):
         143 (97.28 % of base) : 1907.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 3226.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         101 (12.87 % of base) : 11199.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          99 (6.31 % of base) : 10319.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
          89 (9.02 % of base) : 12276.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) : 13435.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 8900.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (54.01 % of base) : 1723.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (56.25 % of base) : 10669.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (78.26 % of base) : 6102.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (34.80 % of base) : 16391.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) : 1890.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          46 (219.05 % of base) : 14055.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
           8 (7.21 % of base) : 12710.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 14895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 15372.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 17202.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 18334.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 5503.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 6350.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) : 1644.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 769.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) : 775.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -400 (-38.50 % of base) : 9202.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -389 (-42.19 % of base) : 1554.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.83 % of base) : 15198.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -313 (-41.68 % of base) : 5344.dasm - System.Linq.Enumerable:TakeIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -307 (-33.15 % of base) : 5910.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)
        -288 (-41.56 % of base) : 9861.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)
        -276 (-32.13 % of base) : 1379.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 5114.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) : 9334.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) : 271.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -195 (-36.31 % of base) : 9338.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -189 (-33.69 % of base) : 5310.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)
        -186 (-20.00 % of base) : 10686.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) : 660.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) : 1627.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)
        -145 (-31.39 % of base) : 7087.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier0)
        -141 (-34.81 % of base) : 3470.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] (Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 14055.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (112.70 % of base) : 1890.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          80 (103.90 % of base) : 13435.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier0)
          80 (103.90 % of base) : 8900.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.28 % of base) : 1907.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 3226.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          72 (78.26 % of base) : 6102.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          72 (56.25 % of base) : 10669.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          74 (54.01 % of base) : 1723.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          71 (34.80 % of base) : 16391.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 (12.87 % of base) : 11199.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          89 (9.02 % of base) : 12276.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)
           8 (7.21 % of base) : 12710.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 14895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 15372.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 17202.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 18334.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 5503.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 6350.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 9809.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) : 1644.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 769.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) : 9334.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.19 % of base) : 1554.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) : 15807.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -313 (-41.68 % of base) : 5344.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.56 % of base) : 9861.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) : 5343.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) : 9691.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.31 % of base) : 16346.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) : 765.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) : 775.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 7361.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 7322.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -258 (-39.94 % of base) : 5114.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -81 (-39.90 % of base) : 3281.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -333 (-39.83 % of base) : 15198.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -129 (-39.81 % of base) : 1629.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.50 % of base) : 9202.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) : 3279.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: 1518103 (overridden on cmd)
Total bytes of diff: 1503202 (overridden on cmd)
Total bytes of delta: -14901 (-0.98 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         143 : 2391.dasm (97.28 % of base)
         138 : 9097.dasm (87.34 % of base)
         101 : 14740.dasm (12.87 % of base)
          99 : 14145.dasm (6.31 % of base)
          91 : 2845.dasm (74.59 % of base)
          89 : 3826.dasm (9.02 % of base)
          80 : 4238.dasm (103.90 % of base)
          74 : 1633.dasm (54.01 % of base)
          72 : 14445.dasm (56.25 % of base)
          72 : 11849.dasm (78.26 % of base)
          71 : 10093.dasm (83.53 % of base)
          71 : 7275.dasm (34.80 % of base)
          71 : 1755.dasm (112.70 % of base)
          46 : 5624.dasm (219.05 % of base)
           8 : 2057.dasm (7.21 % of base)
           8 : 19075.dasm (7.21 % of base)
           6 : 12777.dasm (3.82 % of base)

Top file improvements (bytes):
        -582 : 12427.dasm (-29.35 % of base)
        -457 : 1554.dasm (-49.25 % of base)
        -457 : 18541.dasm (-49.35 % of base)
        -425 : 714.dasm (-46.65 % of base)
        -404 : 720.dasm (-40.28 % of base)
        -389 : 18453.dasm (-42.42 % of base)
        -389 : 1464.dasm (-42.19 % of base)
        -333 : 12067.dasm (-39.83 % of base)
        -313 : 7338.dasm (-41.57 % of base)
        -288 : 16093.dasm (-41.56 % of base)
        -281 : 12425.dasm (-32.41 % of base)
        -276 : 1306.dasm (-32.13 % of base)
        -258 : 7558.dasm (-39.94 % of base)
        -240 : 13214.dasm (-43.01 % of base)
        -213 : 10130.dasm (-28.40 % of base)
        -210 : 17283.dasm (-34.37 % of base)
        -210 : 272.dasm (-34.37 % of base)
        -195 : 12207.dasm (-36.45 % of base)
        -195 : 10323.dasm (-35.78 % of base)
        -189 : 8882.dasm (-33.69 % of base)

49 total files with Code Size differences (32 improved, 17 regressed), 23 unchanged.

Top method regressions (bytes):
         143 (97.28 % of base) : 2391.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 9097.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
         101 (12.87 % of base) : 14740.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          99 (6.31 % of base) : 14145.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
          91 (74.59 % of base) : 2845.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          89 (9.02 % of base) : 3826.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) : 4238.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
          74 (54.01 % of base) : 1633.dasm - System.TimeSpan:IntervalFromDoubleTicks(double):System.TimeSpan (Tier0)
          72 (56.25 % of base) : 14445.dasm - System.Threading.CancellationTokenSource:.ctor(System.TimeSpan,System.TimeProvider):this (Tier0)
          72 (78.26 % of base) : 11849.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          71 (34.80 % of base) : 7275.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) : 10093.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          71 (112.70 % of base) : 1755.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          46 (219.05 % of base) : 5624.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
           8 (7.21 % of base) : 2057.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 19075.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           6 (3.82 % of base) : 12777.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)

Top method improvements (bytes):
        -582 (-29.35 % of base) : 12427.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) : 1554.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.35 % of base) : 18541.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 714.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) : 720.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -389 (-42.42 % of base) : 18453.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.19 % of base) : 1464.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.83 % of base) : 12067.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`1[System.__Canon]):ubyte (Tier0)
        -313 (-41.57 % of base) : 7338.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.56 % of base) : 16093.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) : 12425.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) : 1306.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 7558.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -240 (-43.01 % of base) : 13214.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)
        -213 (-28.40 % of base) : 10130.dasm - System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int]) (Tier0)
        -210 (-34.37 % of base) : 17283.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -210 (-34.37 % of base) : 272.dasm - System.Array:Resize[System.__Canon](byref,int) (Tier0)
        -195 (-35.78 % of base) : 10323.dasm - ProtoBuf.ProtoReader+State:ReadAsRoot[System.__Canon](System.__Canon,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):System.__Canon:this (Tier0)
        -195 (-36.45 % of base) : 12207.dasm - System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.IEnumerable,byref):ubyte (Tier0)
        -189 (-33.69 % of base) : 8882.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 5624.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (112.70 % of base) : 1755.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (Tier0)
          80 (103.90 % of base) : 4238.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier0)
         143 (97.28 % of base) : 2391.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier0)
         138 (87.34 % of base) : 9097.dasm - System.DateTime:AddUnits(double,long,long):System.DateTime:this (Tier0)
          71 (83.53 % of base) : 10093.dasm - System.Collections.Generic.List`1[System.__Canon]:TrimExcess():this (Tier0)
          72 (78.26 % of base) : 11849.dasm - System.Threading.TimerQueueTimer:GetMilliseconds(System.TimeSpan,System.String):uint (Tier0)
          91 (74.59 % of base) : 2845.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (Tier1)
          72 (56.25 % of base) : 14445.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) : 7275.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 (12.87 % of base) : 14740.dasm - System.Net.Http.HttpConnectionPool:CancelIfNecessary[System.__Canon](System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.__Canon],ubyte):this (Tier0)
          89 (9.02 % of base) : 3826.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)
           8 (7.21 % of base) : 2057.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           8 (7.21 % of base) : 19075.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          99 (6.31 % of base) : 14145.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (Tier0)
           6 (3.82 % of base) : 12777.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)

Top method improvements (percentages):
        -457 (-49.35 % of base) : 18541.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.25 % of base) : 1554.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.65 % of base) : 714.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -240 (-43.01 % of base) : 13214.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) : 18453.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.19 % of base) : 1464.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) : 6544.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon] (Tier0)
        -313 (-41.57 % of base) : 7338.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.56 % of base) : 16093.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) : 9916.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetSerializer[System.__Canon]():ProtoBuf.Serializers.ISerializer`1[System.__Canon]:this (Tier0)
        -133 (-40.92 % of base) : 7337.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) : 6882.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon):ubyte (Tier0)
        -129 (-40.31 % of base) : 7230.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) : 710.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) : 720.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 11629.dasm - System.Text.Json.JsonSerializer:Deserialize[System.__Canon](byref,System.Text.Json.JsonSerializerOptions):System.__Canon (Tier0)
         -81 (-40.10 % of base) : 10467.dasm - System.Text.Json.JsonSerializer:Serialize[System.__Canon](System.__Canon,System.Text.Json.JsonSerializerOptions):System.String (Tier0)
        -258 (-39.94 % of base) : 7558.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
         -81 (-39.90 % of base) : 6002.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`1[System.__Canon] (Tier0)
        -333 (-39.83 % of base) : 12067.dasm - System.MemoryExtensions:SequenceEqual[System.__Canon](System.Span`1[System.__Canon],System.ReadOnlySpan`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: 379814 (overridden on cmd)
Total bytes of diff: 379826 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          71 : 308.dasm (109.23 % of base)
          46 : 1396.dasm (219.05 % of base)
          46 : 1841.dasm (219.05 % of base)
          46 : 2350.dasm (82.14 % of base)
          46 : 1591.dasm (82.14 % of base)
          15 : 3889.dasm (7.54 % of base)
          13 : 3440.dasm (9.92 % of base)
          13 : 3899.dasm (7.93 % of base)
          13 : 3607.dasm (9.92 % of base)
          13 : 3819.dasm (7.69 % of base)
          13 : 4658.dasm (8.07 % of base)
          11 : 3909.dasm (4.78 % of base)
          11 : 3639.dasm (7.91 % of base)
           9 : 3709.dasm (9.18 % of base)
           9 : 3779.dasm (9.18 % of base)
           8 : 3422.dasm (10.00 % of base)
           8 : 3565.dasm (10.00 % of base)
           8 : 3616.dasm (10.00 % of base)
           8 : 3627.dasm (10.00 % of base)
           8 : 3677.dasm (10.00 % of base)

Top file improvements (bytes):
         -34 : 2671.dasm (-12.88 % of base)
         -33 : 1975.dasm (-16.34 % of base)
         -33 : 3024.dasm (-29.73 % of base)
         -33 : 1258.dasm (-16.34 % of base)
         -33 : 870.dasm (-29.73 % of base)
         -25 : 2670.dasm (-23.58 % of base)
         -25 : 1379.dasm (-26.32 % of base)
         -25 : 1374.dasm (-12.82 % of base)
         -25 : 1812.dasm (-26.32 % of base)
         -25 : 2255.dasm (-29.07 % of base)
         -23 : 2714.dasm (-22.77 % of base)
         -22 : 1378.dasm (-25.00 % of base)
         -22 : 1811.dasm (-25.00 % of base)
         -22 : 1375.dasm (-31.43 % of base)
         -20 : 1795.dasm (-17.70 % of base)
         -18 : 2548.dasm (-10.23 % of base)
          -5 : 3371.dasm (-6.85 % of base)
          -5 : 3394.dasm (-6.85 % of base)
          -5 : 3525.dasm (-6.85 % of base)
          -5 : 3189.dasm (-6.58 % of base)

47 total files with Code Size differences (22 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          71 (109.23 % of base) : 308.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
          46 (82.14 % of base) : 1591.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
          46 (82.14 % of base) : 2350.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier1)
          46 (219.05 % of base) : 1396.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (219.05 % of base) : 1841.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          15 (7.54 % of base) : 3889.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (9.92 % of base) : 3607.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (9.92 % of base) : 3440.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          13 (8.07 % of base) : 4658.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          13 (7.69 % of base) : 3819.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (7.93 % of base) : 3899.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          11 (7.91 % of base) : 3639.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          11 (4.78 % of base) : 3909.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
           9 (9.18 % of base) : 3709.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (Tier0)
           9 (9.18 % of base) : 3779.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3575.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3416.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           8 (10.00 % of base) : 3616.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3422.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           8 (10.00 % of base) : 3627.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method improvements (bytes):
         -34 (-12.88 % of base) : 2671.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -33 (-29.73 % of base) : 3024.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -33 (-29.73 % of base) : 870.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -33 (-16.34 % of base) : 1975.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)
         -33 (-16.34 % of base) : 1258.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)
         -25 (-23.58 % of base) : 2670.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -25 (-26.32 % of base) : 1379.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
         -25 (-26.32 % of base) : 1812.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
         -25 (-29.07 % of base) : 2255.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -25 (-12.82 % of base) : 1374.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
         -23 (-22.77 % of base) : 2714.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -22 (-25.00 % of base) : 1378.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
         -22 (-25.00 % of base) : 1811.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
         -22 (-31.43 % of base) : 1375.dasm - 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 Tier1)
         -20 (-17.70 % of base) : 1795.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
         -18 (-10.23 % of base) : 2548.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 (Tier1)
          -5 (-6.58 % of base) : 3189.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -5 (-6.85 % of base) : 3485.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3394.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.58 % of base) : 3405.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)

Top method regressions (percentages):
          46 (219.05 % of base) : 1396.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Instrumented Tier1)
          46 (219.05 % of base) : 1841.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (Tier1)
          71 (109.23 % of base) : 308.dasm - MarshalSizeOf2:NextHighestMultipleOf(int,int):int:this (Tier0)
          46 (82.14 % of base) : 1591.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Instrumented Tier1)
          46 (82.14 % of base) : 2350.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (Tier1)
           8 (10.00 % of base) : 3575.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3416.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           8 (10.00 % of base) : 3616.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3422.dasm - NullableTest15:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           8 (10.00 % of base) : 3627.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3677.dasm - NullableTest20:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (10.00 % of base) : 3202.dasm - NullableTest3:BoxUnboxToQ(System.Enum):ubyte (Tier0)
           8 (10.00 % of base) : 3565.dasm - NullableTest9:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (9.92 % of base) : 3607.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (9.92 % of base) : 3440.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
           9 (9.18 % of base) : 3709.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (Tier0)
           9 (9.18 % of base) : 3779.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (Tier0)
           8 (8.51 % of base) : 3649.dasm - NullableTest17:BoxUnboxToQ(System.Object):ubyte (Tier0)
          13 (8.07 % of base) : 4658.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          13 (7.93 % of base) : 3899.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)

Top method improvements (percentages):
         -22 (-31.43 % of base) : 1375.dasm - 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 Tier1)
         -33 (-29.73 % of base) : 3024.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -33 (-29.73 % of base) : 870.dasm - System.Linq.Enumerable:FirstOrDefault[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.__Canon (Tier0)
         -25 (-29.07 % of base) : 2255.dasm - System.Runtime.InteropServices.CollectionsMarshal:GetValueRefOrAddDefault[System.__Canon,int](System.Collections.Generic.Dictionary`2[System.__Canon,int],System.__Canon,byref):byref (Instrumented Tier1)
         -25 (-26.32 % of base) : 1379.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Instrumented Tier1)
         -25 (-26.32 % of base) : 1812.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref,byref) (Tier1)
         -22 (-25.00 % of base) : 1378.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Instrumented Tier1)
         -22 (-25.00 % of base) : 1811.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1[int]:AwaitUnsafeOnCompleted[System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter,System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]](byref,byref):this (Tier1)
         -25 (-23.58 % of base) : 2670.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -23 (-22.77 % of base) : 2714.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -20 (-17.70 % of base) : 1795.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__61_0(System.Object):this (Tier1)
         -33 (-16.34 % of base) : 1975.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)
         -33 (-16.34 % of base) : 1258.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)
         -34 (-12.88 % of base) : 2671.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
         -25 (-12.82 % of base) : 1374.dasm - System.Threading.AsyncOverSyncWithIoCancellation:InvokeAsync[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int](System.Func`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int],System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Instrumented Tier1)
         -18 (-10.23 % of base) : 2548.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 (Tier1)
          -5 (-6.85 % of base) : 3485.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3394.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -5 (-6.85 % of base) : 3525.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -5 (-6.85 % of base) : 3371.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)


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: 837452 (overridden on cmd)
Total bytes of diff: 819886 (overridden on cmd)
Total bytes of delta: -17566 (-2.10 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         132 : 12352.dasm (29.73 % of base)
         130 : 9639.dasm (17.29 % of base)
          69 : 20225.dasm (49.29 % of base)
          69 : 8908.dasm (24.47 % of base)
          65 : 20380.dasm (40.62 % of base)
          59 : 20219.dasm (24.79 % of base)
          49 : 20231.dasm (21.49 % of base)
          46 : 17421.dasm (63.01 % of base)
          46 : 17425.dasm (63.01 % of base)
          46 : 17440.dasm (70.77 % of base)
          46 : 17445.dasm (70.77 % of base)
          46 : 17627.dasm (63.01 % of base)
          46 : 17647.dasm (70.77 % of base)
          46 : 17652.dasm (70.77 % of base)
          46 : 17657.dasm (70.77 % of base)
          45 : 10976.dasm (62.50 % of base)
          45 : 17268.dasm (41.67 % of base)
          45 : 17341.dasm (81.82 % of base)
          45 : 17351.dasm (81.82 % of base)
          45 : 17356.dasm (81.82 % of base)

Top file improvements (bytes):
        -148 : 12460.dasm (-22.49 % of base)
        -122 : 2254.dasm (-25.05 % of base)
        -122 : 6200.dasm (-25.05 % of base)
        -118 : 12505.dasm (-23.55 % of base)
        -115 : 2258.dasm (-27.45 % of base)
        -111 : 12463.dasm (-23.03 % of base)
        -110 : 2252.dasm (-31.61 % of base)
        -110 : 2256.dasm (-31.61 % of base)
        -109 : 10567.dasm (-25.23 % of base)
        -108 : 5152.dasm (-23.23 % of base)
        -108 : 13360.dasm (-17.14 % of base)
        -103 : 1163.dasm (-28.14 % of base)
        -103 : 5198.dasm (-26.89 % of base)
        -103 : 11683.dasm (-25.81 % of base)
        -100 : 10601.dasm (-25.19 % of base)
         -96 : 12486.dasm (-21.19 % of base)
         -95 : 2450.dasm (-31.05 % of base)
         -95 : 2504.dasm (-31.05 % of base)
         -95 : 2508.dasm (-31.05 % of base)
         -94 : 12395.dasm (-21.86 % of base)

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

Top method regressions (bytes):
         132 (29.73 % of base) : 12352.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) : 9639.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) : 8908.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)
          69 (49.29 % of base) : 20225.dasm - System.Numerics.Vector:ConvertToInt32(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[int] (FullOpts)
          65 (40.62 % of base) : 20380.dasm - System.Numerics.Vector:SquareRoot[ubyte](System.Numerics.Vector`1[ubyte]):System.Numerics.Vector`1[ubyte] (FullOpts)
          59 (24.79 % of base) : 20219.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)
          49 (21.49 % of base) : 20231.dasm - System.Numerics.Vector:CreateSequence[System.__Canon](System.__Canon,System.__Canon):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          46 (63.01 % of base) : 17421.dasm - System.Int64:CreateSaturating[double](double):long (FullOpts)
          46 (63.01 % of base) : 17425.dasm - System.Int64:CreateTruncating[double](double):long (FullOpts)
          46 (70.77 % of base) : 17440.dasm - System.Int64:System.Numerics.INumberBase<System.Int64>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          46 (70.77 % of base) : 17445.dasm - System.Int64:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          46 (63.01 % of base) : 17627.dasm - System.IntPtr:CreateTruncating[double](double):long (FullOpts)
          46 (70.77 % of base) : 17652.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          46 (70.77 % of base) : 17647.dasm - System.IntPtr:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          46 (70.77 % of base) : 17657.dasm - System.IntPtr:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (62.50 % of base) : 10976.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) : 10979.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) : 10958.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 (41.67 % of base) : 17268.dasm - System.Half:TryConvertTo[ubyte](System.Half,byref):ubyte (FullOpts)
          45 (81.82 % of base) : 17341.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)

Top method improvements (bytes):
        -148 (-22.49 % of base) : 12460.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) : 2254.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) : 6200.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) : 12505.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) : 2258.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) : 12463.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) : 2252.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) : 2256.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) : 10567.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) : 5152.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) : 13360.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) : 1163.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) : 5198.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) : 11683.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) : 10601.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
         -96 (-21.19 % of base) : 12486.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) : 2504.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) : 2508.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) : 2450.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) : 12395.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):
          37 (205.56 % of base) : 17416.dasm - System.Int64:CreateChecked[double](double):long (FullOpts)
          37 (205.56 % of base) : 17617.dasm - System.IntPtr:CreateChecked[double](double):long (FullOpts)
          35 (194.44 % of base) : 17369.dasm - System.Int32:CreateChecked[double](double):int (FullOpts)
          30 (100.00 % of base) : 17435.dasm - System.Int64:TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
          30 (100.00 % of base) : 17632.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
          30 (100.00 % of base) : 17637.dasm - System.IntPtr:TryConvertFromChecked[double](double,byref):ubyte (FullOpts)
          45 (84.91 % of base) : 17391.dasm - System.Int32:System.Numerics.INumberBase<System.Int32>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          45 (84.91 % of base) : 17401.dasm - System.Int32:System.Numerics.INumberBase<System.Int32>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (84.91 % of base) : 17396.dasm - System.Int32:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          45 (81.82 % of base) : 17341.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          45 (81.82 % of base) : 17351.dasm - System.Int16:System.Numerics.INumberBase<System.Int16>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (81.82 % of base) : 17356.dasm - System.Int16:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (78.95 % of base) : 18569.dasm - System.SByte:System.Numerics.INumberBase<System.SByte>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          45 (78.95 % of base) : 18579.dasm - System.SByte:System.Numerics.INumberBase<System.SByte>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (78.95 % of base) : 18584.dasm - System.SByte:TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)
          45 (75.00 % of base) : 10979.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) : 10958.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)
          46 (70.77 % of base) : 17440.dasm - System.Int64:System.Numerics.INumberBase<System.Int64>.TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          46 (70.77 % of base) : 17445.dasm - System.Int64:TryConvertFromSaturating[double](double,byref):ubyte (FullOpts)
          46 (70.77 % of base) : 17652.dasm - System.IntPtr:System.Numerics.INumberBase<nint>.TryConvertFromTruncating[double](double,byref):ubyte (FullOpts)

Top method improvements (percentages):
         -37 (-64.91 % of base) : 20223.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[long]):System.Numerics.Vector`1[double] (FullOpts)
         -37 (-64.91 % of base) : 20224.dasm - System.Numerics.Vector:ConvertToDouble(System.Numerics.Vector`1[ulong]):System.Numerics.Vector`1[double] (FullOpts)
         -59 (-33.71 % of base) : 9666.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel:SortDescending[System.__Canon](System.__Canon[]):System.__Canon[] (FullOpts)
         -43 (-32.82 % of base) : 8481.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 9097.dasm - Microsoft.FSharp.Collections.ArrayModule:Empty[System.__Canon]():System.__Canon[] (FullOpts)
         -18 (-32.73 % of base) : 11929.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:Structural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 11962.dasm - Microsoft.FSharp.Collections.HashIdentity:Structural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 10005.dasm - Microsoft.FSharp.Collections.ListModule:Empty[System.__Canon]():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 10409.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 15527.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericOne[System.__Canon]():System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 15513.dasm - Microsoft.FSharp.Core.LanguagePrimitives:GenericZero[System.__Canon]():System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+IntrinsicFunctions:CreateInstance[System.__Canon]():System.__Canon (FullOpts)
         -43 (-32.33 % of base) : 10152.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) : 11931.dasm - Microsoft.FSharp.Collections.ComparisonIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IComparer`1[System.__Canon] (FullOpts)
         -18 (-32.14 % of base) : 11967.dasm - Microsoft.FSharp.Collections.HashIdentity:NonStructural[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -18 (-32.14 % of base) : 11966.dasm - Microsoft.FSharp.Collections.HashIdentity:Reference[System.__Canon]():System.Collections.Generic.IEqualityComparer`1[System.__Canon] (FullOpts)
         -63 (-31.66 % of base) : 10269.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) : 2252.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) : 2256.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) : 1155.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.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: 1540227 (overridden on cmd)
Total bytes of diff: 1516813 (overridden on cmd)
Total bytes of delta: -23414 (-1.52 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         187 : 10078.dasm (36.52 % of base)
          17 : 3832.dasm (6.12 % of base)
           1 : 5155.dasm (0.85 % of base)
           1 : 942.dasm (0.85 % of base)

Top file improvements (bytes):
        -457 : 36.dasm (-49.25 % of base)
        -457 : 4321.dasm (-49.25 % of base)
        -425 : 28.dasm (-46.60 % of base)
        -425 : 4316.dasm (-46.60 % of base)
        -404 : 5535.dasm (-40.36 % of base)
        -404 : 1275.dasm (-40.36 % of base)
        -389 : 4411.dasm (-42.10 % of base)
        -389 : 126.dasm (-42.33 % of base)
        -288 : 4417.dasm (-42.86 % of base)
        -288 : 674.dasm (-42.86 % of base)
        -288 : 132.dasm (-42.86 % of base)
        -276 : 1303.dasm (-32.17 % of base)
        -276 : 5563.dasm (-32.17 % of base)
        -258 : 1920.dasm (-39.94 % of base)
        -258 : 6113.dasm (-39.94 % of base)
        -240 : 7519.dasm (-43.01 % of base)
        -237 : 2751.dasm (-46.84 % of base)
        -234 : 16263.dasm (-42.09 % of base)
        -225 : 16382.dasm (-20.23 % of base)
        -210 : 9677.dasm (-34.37 % of base)

35 total files with Code Size differences (31 improved, 4 regressed), 36 unchanged.

Top method regressions (bytes):
         187 (36.52 % of base) : 10078.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
          17 (6.12 % of base) : 3832.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           1 (0.85 % of base) : 5155.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 942.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) : 36.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.25 % of base) : 4321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -425 (-46.60 % of base) : 28.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) : 4316.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.36 % of base) : 5535.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -404 (-40.36 % of base) : 1275.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -389 (-42.10 % of base) : 4411.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) : 126.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)
        -288 (-42.86 % of base) : 674.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) : 4417.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) : 132.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -276 (-32.17 % of base) : 1303.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -276 (-32.17 % of base) : 5563.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (Tier0)
        -258 (-39.94 % of base) : 1920.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) : 6113.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (Tier0)
        -240 (-43.01 % of base) : 7519.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -237 (-46.84 % of base) : 2751.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -234 (-42.09 % of base) : 16263.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
        -225 (-20.23 % of base) : 16382.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 (Tier0)
        -210 (-34.37 % of base) : 9677.dasm - System.Array:Resize[System.Collections.Immutable.RefAsValueType`1[System.__Canon]](byref,int) (Tier0)

Top method regressions (percentages):
         187 (36.52 % of base) : 10078.dasm - Microsoft.CodeAnalysis.VersionHelper:GenerateVersionFromPatternAndCurrentTime(System.DateTime,System.Version):System.Version (Tier0)
          17 (6.12 % of base) : 3832.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
           1 (0.85 % of base) : 5155.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
           1 (0.85 % of base) : 942.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) : 36.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -457 (-49.25 % of base) : 4321.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier0)
        -237 (-46.84 % of base) : 2751.dasm - Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon]) (Tier0)
        -425 (-46.60 % of base) : 28.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) : 4316.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier0)
        -129 (-44.03 % of base) : 13288.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (Tier0)
        -129 (-43.88 % of base) : 10934.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithDistinctNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
         -81 (-43.55 % of base) : 16834.dasm - Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary:CreateBuilder[System.__Canon,System.__Canon]():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2+Builder[System.__Canon,System.__Canon] (Tier0)
         -81 (-43.55 % of base) : 7412.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]] (Tier0)
        -240 (-43.01 % of base) : 7519.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (Tier0)
        -288 (-42.86 % of base) : 674.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) : 4417.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) : 132.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) : 126.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)
        -129 (-42.30 % of base) : 9538.dasm - System.Collections.Immutable.ImmutableHashSet:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableHashSet`1[System.__Canon] (Tier0)
         -81 (-42.19 % of base) : 10782.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] (Tier0)
        -389 (-42.10 % of base) : 4411.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)
        -234 (-42.09 % of base) : 16263.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (Tier0)
        -129 (-41.88 % of base) : 13354.dasm - Microsoft.CodeAnalysis.PublicContract:ToBoxedImmutableArrayWithNonNullItems[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String):System.Collections.Generic.IReadOnlyList`1[System.__Canon] (Tier0)
         -81 (-41.75 % of base) : 8379.dasm - Microsoft.VisualStudio.Composition.AttributeServices:GetFirstAttribute[System.__Canon](System.Reflection.ICustomAttributeProvider):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: 745455 (overridden on cmd)
Total bytes of diff: 737358 (overridden on cmd)
Total bytes of delta: -8097 (-1.09 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          77 : 7279.dasm (12.34 % of base)
          70 : 5386.dasm (6.78 % of base)
          50 : 5996.dasm (2.72 % of base)
          45 : 2828.dasm (20.55 % of base)
          45 : 831.dasm (20.55 % of base)
          32 : 3893.dasm (11.11 % of base)
          23 : 9513.dasm (9.96 % of base)
          20 : 7840.dasm (7.72 % of base)
          17 : 2117.dasm (5.65 % of base)
          17 : 68.dasm (6.12 % of base)
          15 : 9107.dasm (15.79 % of base)
          14 : 2025.dasm (2.98 % of base)
          13 : 7398.dasm (20.31 % of base)
          12 : 1241.dasm (13.33 % of base)
          10 : 3900.dasm (1.13 % of base)
          10 : 9453.dasm (7.69 % of base)
           9 : 6705.dasm (2.94 % of base)
           8 : 9158.dasm (7.34 % of base)
           5 : 4408.dasm (0.82 % of base)
           3 : 4707.dasm (1.38 % of base)

Top file improvements (bytes):
        -270 : 4068.dasm (-23.28 % of base)
        -270 : 970.dasm (-21.79 % of base)
        -270 : 2991.dasm (-21.84 % of base)
        -235 : 9173.dasm (-8.65 % of base)
        -208 : 3987.dasm (-7.29 % of base)
        -177 : 9.dasm (-33.27 % of base)
        -177 : 2058.dasm (-33.27 % of base)
        -171 : 12.dasm (-34.20 % of base)
        -171 : 2061.dasm (-34.20 % of base)
        -163 : 5081.dasm (-21.39 % of base)
        -163 : 737.dasm (-21.39 % of base)
        -155 : 4321.dasm (-31.19 % of base)
        -152 : 430.dasm (-25.12 % of base)
        -152 : 2499.dasm (-25.12 % of base)
        -151 : 2115.dasm (-25.00 % of base)
        -151 : 66.dasm (-25.00 % of base)
        -147 : 4075.dasm (-18.89 % of base)
        -147 : 4428.dasm (-10.10 % of base)
        -143 : 8975.dasm (-37.34 % of base)
        -112 : 461.dasm (-21.05 % of base)

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

Top method regressions (bytes):
          77 (12.34 % of base) : 7279.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) : 5386.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)
          50 (2.72 % of base) : 5996.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
          45 (20.55 % of base) : 2828.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          45 (20.55 % of base) : 831.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          32 (11.11 % of base) : 3893.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)
          23 (9.96 % of base) : 9513.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          20 (7.72 % of base) : 7840.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) : 2117.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          17 (6.12 % 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) : 9107.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          14 (2.98 % of base) : 2025.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
          13 (20.31 % of base) : 7398.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) : 1241.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) : 9453.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)
          10 (1.13 % of base) : 3900.dasm - Microsoft.VisualStudio.Composition.DiscoveredParts:.ctor(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.ComposablePartDefinition],System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.PartDiscoveryException]):this (FullOpts)
           9 (2.94 % of base) : 6705.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) : 9158.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) : 4408.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)
           3 (1.38 % of base) : 4707.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 (bytes):
        -270 (-21.79 % of base) : 970.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 (-21.84 % of base) : 2991.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) : 4068.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)
        -235 (-8.65 % of base) : 9173.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationWithAnalyzers+<CreateAndInitializeDriverAsync>d__41:MoveNext():this (FullOpts)
        -208 (-7.29 % of base) : 3987.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:ComputeSharingBoundaryMetadata(System.Collections.Generic.IEnumerable`1[Microsoft.VisualStudio.Composition.CompositionConfiguration+PartBuilder]):System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.VisualStudio.Composition.CompositionConfiguration+SharingBoundaryMetadata] (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)
        -177 (-33.27 % of base) : 2058.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)
        -171 (-34.20 % of base) : 2061.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -163 (-21.39 % of base) : 5081.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)
        -163 (-21.39 % of base) : 737.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) : 4321.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)
        -152 (-25.12 % of base) : 2499.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
        -151 (-25.00 % of base) : 2115.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) : 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) : 4075.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) : 4428.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) : 8975.dasm - Xunit.Assert:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (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)

Top method regressions (percentages):
          45 (20.55 % of base) : 2828.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          45 (20.55 % of base) : 831.dasm - Xunit.DelegatingLongRunningTestDetectionSink:ThreadWorker():this (FullOpts)
          13 (20.31 % of base) : 7398.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) : 9107.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          12 (13.33 % of base) : 1241.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) : 7279.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) : 3893.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)
          23 (9.96 % of base) : 9513.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          20 (7.72 % of base) : 7840.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) : 9453.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)
           8 (7.34 % of base) : 9158.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)
          70 (6.78 % of base) : 5386.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 (6.12 % of base) : 68.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          17 (5.65 % of base) : 2117.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          14 (2.98 % of base) : 2025.dasm - ComInterfaceGenerator.Tests.GeneratedComInterfaceComImportInteropTests+<>c:<CallComImportInterfaceMethodsOnGeneratedComObject>b__4_0():this (FullOpts)
           9 (2.94 % of base) : 6705.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) : 5996.dasm - Microsoft.CodeAnalysis.TextLoader+<LoadTextAsync>d__11:MoveNext():this (FullOpts)
           3 (1.38 % of base) : 4707.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)
           1 (1.20 % of base) : 5533.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)
           1 (1.20 % of base) : 9829.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 (percentages):
        -143 (-37.34 % of base) : 8975.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)
        -171 (-34.20 % of base) : 2061.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)
        -177 (-33.27 % of base) : 2058.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) : 3441.dasm - System.Linq.Enumerable:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -64 (-32.00 % of base) : 6930.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) : 4321.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
         -59 (-29.50 % of base) : 4179.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) : 3263.dasm - System.Linq.Enumerable:TryGetSpan[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte (FullOpts)
         -37 (-28.91 % of base) : 3322.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) : 5776.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) : 8265.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) : 2098.dasm - System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`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)
         -41 (-27.89 % of base) : 5475.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) : 3364.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) : 4787.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) : 2631.dasm - System.Linq.Enumerable:SetCountAndGetSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int):System.Span`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)


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: 1799593 (overridden on cmd)
Total bytes of diff: 1784814 (overridden on cmd)
Total bytes of delta: -14779 (-0.82 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         177 : 2867.dasm (17.12 % of base)
         171 : 1257.dasm (3.85 % of base)
         135 : 15404.dasm (63.98 % of base)
         128 : 1221.dasm (36.78 % of base)
         122 : 6923.dasm (17.33 % of base)
          98 : 15705.dasm (41.53 % of base)
          91 : 917.dasm (74.59 % of base)
          84 : 15321.dasm (37.84 % of base)
          75 : 15141.dasm (40.32 % of base)
          62 : 15554.dasm (98.41 % of base)
          49 : 15416.dasm (36.03 % of base)
          46 : 4684.dasm (219.05 % of base)
          46 : 14865.dasm (82.14 % of base)
          45 : 15773.dasm (118.42 % of base)
          45 : 3192.dasm (62.50 % of base)
          45 : 672.dasm (75.00 % of base)
          44 : 6576.dasm (14.57 % of base)
          44 : 6587.dasm (14.57 % of base)
          44 : 6597.dasm (15.07 % of base)
          44 : 6600.dasm (14.86 % of base)

Top file improvements (bytes):
        -266 : 3266.dasm (-23.25 % of base)
        -262 : 9642.dasm (-26.44 % of base)
        -184 : 8047.dasm (-28.79 % of base)
        -177 : 233.dasm (-33.27 % of base)
        -171 : 579.dasm (-34.20 % of base)
        -160 : 6759.dasm (-22.32 % of base)
        -160 : 7730.dasm (-22.99 % of base)
        -159 : 16156.dasm (-24.77 % of base)
        -152 : 237.dasm (-25.12 % of base)
        -151 : 531.dasm (-25.00 % of base)
        -151 : 5840.dasm (-10.98 % of base)
        -148 : 5638.dasm (-22.49 % of base)
        -144 : 8672.dasm (-24.91 % of base)
        -135 : 8934.dasm (-20.74 % of base)
        -119 : 7881.dasm (-25.54 % of base)
        -118 : 6918.dasm (-23.89 % of base)
        -118 : 8467.dasm (-17.33 % of base)
        -118 : 9643.dasm (-15.30 % of base)
        -118 : 6719.dasm (-23.09 % of base)
        -118 : 8645.dasm (-22.69 % of base)

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

Top method regressions (bytes):
         177 (17.12 % of base) : 2867.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
         171 (3.85 % of base) : 1257.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
         135 (63.98 % of base) : 15404.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
         128 (36.78 % of base) : 1221.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
         122 (17.33 % of base) : 6923.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)
          98 (41.53 % of base) : 15705.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
          91 (74.59 % of base) : 917.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
          84 (37.84 % of base) : 15321.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
          75 (40.32 % of base) : 15141.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
          62 (98.41 % of base) : 15554.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
          49 (36.03 % of base) : 15416.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
          46 (82.14 % of base) : 14865.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
          46 (219.05 % of base) : 4684.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          45 (62.50 % of base) : 3192.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 (118.42 % of base) : 15773.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
          45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          44 (15.07 % of base) : 6597.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) : 6600.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) : 6587.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) : 6576.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)

Top method improvements (bytes):
        -266 (-23.25 % of base) : 3266.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) : 9642.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) : 8047.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) : 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) : 579.dasm - System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
        -160 (-22.32 % of base) : 6759.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) : 7730.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)
        -159 (-24.77 % of base) : 16156.dasm - System.Linq.Enumerable:TryGetLast[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) : 5840.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) : 531.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) : 5638.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) : 8672.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)
        -135 (-20.74 % of base) : 8934.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) : 7881.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 (-17.33 % of base) : 8467.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)
        -118 (-15.30 % of base) : 9643.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)
        -118 (-23.09 % of base) : 6719.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)
        -118 (-22.69 % of base) : 8645.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)
        -118 (-23.89 % of base) : 6918.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) : 4684.dasm - System.Diagnostics.Stopwatch:GetElapsedTime(long,long):System.TimeSpan (FullOpts)
          45 (118.42 % of base) : 15773.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.LinearTransformUtility:GetRangeEnd(float,float,int,int):int (FullOpts)
          62 (98.41 % of base) : 15554.dasm - SixLabors.ImageSharp.Benchmarks.Samplers.GaussianBlur+<>c:<Blur>b__0_0(SixLabors.ImageSharp.Processing.IImageProcessingContext):this (FullOpts)
          46 (82.14 % of base) : 14865.dasm - System.Diagnostics.Stopwatch:GetElapsedDateTimeTicks():long:this (FullOpts)
          45 (75.00 % of base) : 672.dasm - System.Random+Net5CompatSeedImpl:Next(int):int:this (FullOpts)
          91 (74.59 % of base) : 917.dasm - System.Random+Net5CompatSeedImpl:Next(int,int):int:this (FullOpts)
         135 (63.98 % of base) : 15404.dasm - SixLabors.ImageSharp.SimdUtils:ConvertNormalizedFloatToByteRemainder(System.ReadOnlySpan`1[float],System.Span`1[ubyte]) (FullOpts)
          45 (62.50 % of base) : 3192.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)
          98 (41.53 % of base) : 15705.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteLogicalScreenDescriptor(SixLabors.ImageSharp.Metadata.ImageMetadata,int,int,int,ubyte,System.IO.Stream):this (FullOpts)
          75 (40.32 % of base) : 15141.dasm - SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData:FromMetadata(SixLabors.ImageSharp.Metadata.ImageMetadata):SixLabors.ImageSharp.Formats.Png.Chunks.PhysicalChunkData (FullOpts)
          84 (37.84 % of base) : 15321.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponent:Init(int,int):this (FullOpts)
         128 (36.78 % of base) : 1221.dasm - BepuPhysics.IslandSleeper:Update(BepuUtilities.IThreadDispatcher,ubyte):this (FullOpts)
          49 (36.03 % of base) : 15416.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.SpectralConverter`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:GetPixelBuffer(System.Threading.CancellationToken):SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgb24]:this (FullOpts)
         122 (17.33 % of base) : 6923.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) : 2867.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):System.TimeZoneInfo+AdjustmentRule (FullOpts)
          44 (15.07 % of base) : 6597.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) : 6600.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) : 6587.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) : 6576.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) : 6523.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)

Top method improvements (percentages):
        -171 (-34.20 % of base) : 579.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)
         -43 (-32.82 % of base) : 8726.dasm - Microsoft.FSharp.Collections.SetTreeModule:current[System.__Canon](Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]):System.__Canon (FullOpts)
         -18 (-32.73 % of base) : 10213.dasm - Microsoft.FSharp.Collections.SeqModule:Empty[System.__Canon]():System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         -18 (-32.73 % of base) : 13701.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) : 7840.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) : 9013.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) : 5937.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:Return[System.__Canon](System.__Canon):FSharp.Compiler.BuildGraph+NodeCode`1[System.__Canon]:this (FullOpts)
         -63 (-31.03 % of base) : 6354.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) : 7588.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) : 13191.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) : 7922.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) : 5540.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) : 5681.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) : 5532.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) : 5679.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) : 8572.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) : 11256.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)
         -37 (-28.91 % of base) : 5746.dasm - System.Collections.Immutable.ImmutableArray:CreateBuilder[System.__Canon]():System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon] (FullOpts)
        -184 (-28.79 % of base) : 8047.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)